在标准的C中,变量大概可以分为全局变量(用extern修饰),静态变量(用static修饰),局部变量三中类型.
在内存中用于存储变量的空间也可以分为堆区、栈区、全局区(静态区)。其中堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,一般存放malloc()函数申请请的变量空间;栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等;全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
验证:静态变量与全局变量都存放在同一片区域当中
#include<iostream.h> /* 全局变量 */ extern int iTx = 1; void main() { /* 静态变量 */ static int iSTx = 2; /* 局部变量 */ int ijx = 3; cout<< &iTx <<endl; cout<< &iSTx <<endl; cout<< &ijx <<endl; } 输出的结果: 0x0042AD50 0x0042AD54 0x0012FF7C 从这里可以看出iSTx和iTx是存放在同一片连续的内存空间当中,相差4个单元长度。其他存储区的验证方法以之相识。 |