按变量的生存期来区分,变量有动态存储方式和静态存储方式两种类型。其中全局变量全部存放在静态存储区中,而函数形式参数、自动变量、函数调用时的现场保护和返回地址存放在动态存储区中。
函数中的局部变量(不包括static存储类别)都是动态的分配存储空间的,数据存储在动态存储区的。在调用该函数时,系统会自动给这些变量分配存储空间,在函数调用结束时就自动释放存储空间,因此这种局部变量被称为自动变量。
关键字auto可以省略不写,并且程序中大多数变量都属于自动变量。
有时候希望函数中的局部变量在函数调用结束后不消失而继续保留原值,即其占用的内存单元不释放,在下一次调用该函数时,该变量已经有值,这时该变量就被称为静态局部变量。
下面用代码来直观的表示静态局部变量的特点:
另外,再向大家分享一个题目,输出1到10的阶乘值。这个题的方法很多,在这儿我就用一种方法来实现,话不多说,直接上代码。
当i=1时,a=1,返回数值1;当i=2时,由于a是static变量,程序运行时不会释放a的空间,a=1✘2,返回数值2;当i=3时,a=1✘2✘3=6,返回数值6;后面依次类推。
如果有一些变量使用频繁,则为存取变量的值要花很多时间,为提高其执行效率,允许将局部变量的值放在CPU的寄存器中,需要时直接从寄存器取出参加运算,不必再到内存中去取,大大的提高了程序的执行效率,这种变量就叫做寄存器变量。
调用函数 ,求3个整数中的最大值:
由于a,b,c定义在max函数前面,该函数就不需要有参数传递了,因为max函数可以直接使用外部变量a,b,c的值
文件1中:
文件2中:
在定义外部变量时在前面加一个static声明,这种变量就叫做静态外部变量,这种变量在整个执行期间不释放,其所分配的空间始终存在,它的作用域只限于本文件模块。
好了 ,今天的分享就到了这里了,希望大家能提出些建议,一起共同进步。
本文发布于:2024-02-02 22:16:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170688338546800.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |