变量的在内存的存储,与程序执行的关系!
静态数据区:
在静态数据区中存储的是全局变量,一旦全局变量被分配内存空间后,在程序结束前该内存空间不会被释放;
动态数据区:
主要存放局部变量,在进入局部变量的作用范围时才被分配空间,在出了该局部变量的作用范围后,该内存空间即刻被释放。
自动变量(auto variable)
自动变量是“局部变量”默认的存储类型;因此auto的书写可以省略。
因此“自动局部变量”一定是存储于内存中的“动态数据区”,自动变量在定义时自动分配存储空间,在作用域结束时自动释放空间。
寄存器变量(register)
寄存器在CPU中,是计算机存储体系中离运算器最近,访问最直接,速度最快的存储部件。
在程序中定义寄存器变量对编译系统只是建议性(而不是强制性)的。
优化编译系统能够识别使用频繁的变量,自动地将这些变量放在寄存器中。
外部变量(extern)
静态局部变量(static local variable)
静态局部变量是存储于“静态区”的局部变量!
具有局部特性和静态特性的双重属性:
作用范围仅限于本函数,存储在静态区,函数调用结束后不消失而保留原值,在下一次调用时,保留上一次调用结束时的值。
对静态局部变量,除非必要,不要多用
1、存储效率:静态局部变量长期占用静态存储区;
2、静态局部变量一定程度上会降低程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么!!!