变量的在内存的存储,与程序执行的关系!


静态数据区:

在静态数据区中存储的是全局变量,一旦全局变量被分配内存空间后,在程序结束前该内存空间不会被释放;

动态数据区:

主要存放局部变量,在进入局部变量的作用范围时才被分配空间,在出了该局部变量的作用范围后,该内存空间即刻被释放。


自动变量(auto variable)

自动变量是“局部变量”默认的存储类型;因此auto的书写可以省略。


因此“自动局部变量”一定是存储于内存中的“动态数据区”,自动变量在定义时自动分配存储空间,在作用域结束时自动释放空间。

寄存器变量(register)

寄存器在CPU中,是计算机存储体系中离运算器最近,访问最直接,速度最快的存储部件。

在程序中定义寄存器变量对编译系统只是建议性(而不是强制性)的。

优化编译系统能够识别使用频繁的变量,自动地将这些变量放在寄存器中。

外部变量(extern)


静态局部变量(static local variable)

静态局部变量是存储于“静态区”的局部变量!

具有局部特性和静态特性的双重属性:

作用范围仅限于本函数,存储在静态区,函数调用结束后不消失而保留原值,在下一次调用时,保留上一次调用结束时的值。

对静态局部变量,除非必要,不要多用

1、存储效率:静态局部变量长期占用静态存储区;

2、静态局部变量一定程度上会降低程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么!!!




猜你喜欢

转载自blog.csdn.net/pl0020/article/details/80983456