从作用域的角度来看,变量可以分为局部变量和全局变量;从生存期(存在时间)的角度来看,变量又分为静态存储和动态存储。静态存储的变量在整个程序运行期间分配固定的存储空间。动态存储的变量在程序运行的期间根据需要动态分配空间,函数调用开始为其分配地址空间,函数调用结束后释放所占空间。
内存中,供C程序使用的存储空间分为程序区、静态存储区、动态存储区三部分。程序区专门用于存放源程序(包括函数);静态存储区用于存放静态变量,这些变量在程序编译阶段就已经被分配地址并一次进行初始化了,以后不再进行变量的初始化工作;动态存储区用于存放动态型变量,这些变量在函数调用阶段进行地址分配的,函数调用结束后将自动释放其所占的内存空间。
在C语言中,变量有数据类型和存储类型两个属性。严格的来说,变量的定义形式为:
变量的存储类型 变量类型 变量名;
存储类别具体为自动型(auto)、寄存器型(register)、静态型(static)和外部型四种。
局部变量的存储类别