新闻  |   论坛  |   博客  |   在线研讨会
变量的存储类别以及作用空间
zdm1203 | 2011-06-20 17:17:47    阅读:922   发布文章

从变量值存在的时间角度划分,可以把变量划为静态存储空间和动态存储空间。

所谓静态存储空间是指在程序运行期间分配固定的存储空间的方式。而动态存储空间是在程序运行期间根据需要动态分配存储空间。

内存中供用户使用的存储空间,包括三部分:1.程序区,2.静态存储区。3.动态存储区

数据分别存放在静态存储区和动态存储区。全局变量放在静态存储区(初始值为0)。在程序执行时给全局变量分配存储区,程序执行完毕释放。在程序执行过程中他们占据固定的存储单元,而不是动态地进行分配和释放。

在动态存储区存放一下变量:①。函数形式参数,②自动变量。③函数调用时的现场保护和返回地址等。这些参量系统默认的初始化值为无意义值。

一、auto变量

函数中的局部变量,未加static,则自动为auto变量。包括函数中的形参和在函数定义中的变量以及复合语句中定义的变量。这些变量在调用时自动为它们分配存储空间。调用完成后则释放空间。

二、static声明的静态变量

用static声明的局部变量。在函数调用结束后并不释放存储空间。在下一次调用时,其值为上一次函数调用结束时的值。存储于静态存储区,初始值为0。虽然静态变量的值在函数调用以后仍然存在,但其他函数并不能引用它(满足局部变量的要求)。

三、register变量

一般情况下,变量的值是存放在内存中的。当使用时,由控制器发出指令将内存中该变量的值送到运算器中。经过运算器进行运算。如果需要存数,再从运算器将数据送到内存存放。

如果一些变量使用频繁,则可以将其存放在register中,而不必花费时间到内存中取数,存数,以节省时间。

注:只有局部自动变量和形参可以作为寄存器变量;再者一个计算机系统中的寄存器数目是有限的。

四、extern 外部变量(一个全部变量或者函数默认情况为extern)

当一个变量在另一个文件中定义时,可以在该文件中声明为extern变量,从而可以访问到另一个文件中定义的全局变量

file1 : int a;                //定义

file2 :extern int a;               //声明

五、static声明外部变量

限制一个外部变量只被本文件引用,而不可以被其他的文件引用。

file1 : int a;

file2 :static int a;

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客