您现在的位置是:首页» windows系统» c语言寄存器变量的生命周期,寄存器变量和内存变量

c语言寄存器变量的生命周期,寄存器变量和内存变量

2023-12-05 05:41:21
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 现在回过头来才发现,以前的“答非所问”,现在弥补一下啊PLC变量是用来定义I/O信号使用的.例如:外部数字量、模拟量输入信号,还有模拟量输出信号还有内部M区继电器,定时器,计数器等,非

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

现在回过头来才发现,以前的“答非所问”,现在弥补一下啊

PLC变量是用来定义I/O信号使用的.

例如:外部数字量、模拟量输入信号,还有模拟量输出信号

还有内部M区继电器,定时器,计数器等,非DB块的寄存器都需要在PLC变量表中定义变量名称。

=============================================

两者的关系就是直接寻址和符号寻址的关系

如果DB块比较少,DB块内部的变量也比较少,这样是没啥问题的

但是如果DB块和DB块内部的变量多了,再使用这种绝对寻址方式就很不方便了。不容易区分哪个变量是做什么用的。

3.可以给每个DB块定义一个有含义的名字

1).例如DB1是用来控制输送带1的可以取名为 Motor_01

DB1.DBX0.1:是电机启动命令,取名为 Start_CMD

DB1.DBX0.2:是电机停止命令,取名为 Stop_CMD

DB1.DBD2:是电机速度设定,取名为 Speed_Set

这样在程序中写Motor_01.Start_CMD就是 DB1.DBX0.1

Motor_01.Stop_CMD就是DB1.DBX0.2

2).如果DB2是第二条输送带那么就可以取名为Motor_02

3).这样就是类似与面向对象的编程。

这里就不详细展开了,这个编程思路和方法需要慢慢揣摩了

这些方法都是在编写中大型程序时才能体现出它们的作用。

4. PLC变量是用来定义I/O信号使用的.

C语言中对变量的说明包括两方面的内容:变量类型以及变量的存储类型。变量类型如:int(整形),char(字符型)是用来说明变量所占用的内存空间的大小。变量存储类型用来说明变量的作用范围。

C语言的变量存储类有:自动类、寄存器类、静态类和外部类。

关键字auto加在变量名及其类型前,用来说明它是自动变量。局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进行说明,当auto省略时,所有的非全程变量都被认为是局部变量,所以auto实际上从来不用。局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这个变量也就自动消失了,下次调用此函数时再自动产生,还要再赋值,退出时又自动消失。

static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它

函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。

静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与

全程变量的区别是:全程变量可以再说明为外部变量(extern),被其它源文件使用,而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。

extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用 extern来说明。

寄存器变量to能够长在执行速度很重要的情况下使用。其思想是告诉编译程序把该变量放在一个CPU寄存器中。因为数据在寄存器中操作比在内存中快,这样就提高了程序代码的执行速度。寄存器变量的说明是在变量名及类型之前加上关键字register。值得注意的是取地址运算符&不能作用于寄存器变量。

printf("i=%d\tj=%d\n",i,j);

printf("next(i)=%d\n",next());

printf("last(i)=%d\n",last());

printf("sum(i+j)=%d\n",sum(i+j));

具体分析一下三个文件中的变量的种类。

在file1.c的开头声明i是外部变量,并出示化为1。而在main函数内部,说明了两个自动变量i和j,这样在main内部出现的i就是自动量。在file3.c的开头说明i是外部的,表明它与file1.c定义的i是同一个变量,所以reset的值返回的就是这个i的当前值1。file2.c文件已开始就定义了变量i,并声明为静态变量,因此它的使用范围只在当前文件中使用。然而从函数sum中定义来看,其内部用到的i是形式参数,j是内部静态变量,它们与以前的i,j都不同。

首先程序经过编译后声称可执行文件,运行可执行文件后,函数从Main函数体进入,在初始化的过程中得到i为全局变量,初值为1。进入main函数后首先调用函数reset(),进入文件file3.c,文件file3.c声明i为外部变量,所以此时i的值为1,则返回的值为1。函数reset()执行完后返回主函数,继续执行循环体中的程序。循环体首先调用函数next(),程序进入file2.c文件,判断i为静态变量,所以此时i的值为10,执行next()之后i的值为11,返回值为11,并将11作为i的值。当调用last()函数时,判断i的值为11,执行函数后,i的值变为10,并将10作为i的值。最后执行函数sum(i),此时值的注意的是执行程序时传递的是形参,即第一次调用时实际计算的值为sum(i+j=2),这样调用函数sum(i)后执行的结果为i=5+2=7,即为执行的结果。依次类推,分别为7,10,14。

通过以上的程序可以理解不同的存储类型的作用范围不同,在程序设计中如何灵活的使用各种不同的存储类型是能够使程序更灵活。

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com