首页 > 代码库 > C语言中的存储类型

C语言中的存储类型

变量的生存期和作用域:

  1. 存储在静态存储区的变量,在编译时就分配了内存空间,在整个程序执行中,内存单元一直保持到程序运行结束被释放,这类变量的生存期为整个程序的运行期;
  2. 存储在动态区的变量,只有当程序执行到所在的函数被调用时,系统才为其分配内存空间,函数调用结束,变量即被释放,这类变量的生存期仅为函数的调用时间;
  3. 变量按作用域不同可分为局部变量和全局变量;
  4. 局部变量存储于动态存储区,全局变量存储于静态存储区;

变量的存储类型:

  1. 变量的作用域不同,本质上是由于变量的存储类型不同,分auto,register,static,extern四种存储类型,其中自动类型和寄存器的变量属于动态存储方式;而外部类型和静态类型属于静态存储方式;
  2. 自动变量属于局部变量,具有局部变量的一切特点;寄存器类型是直接把变量存储在CPU的通用寄存器中,由于寄存器的内存操作速度要快,将会大大提高程序的执行速度;
  3. 静态类型变量属于静态存储方式,但属于静态存储方式的变量不一定就是静态变量,如外部变量,静态存储方式即上文中说的存储在静态存储区吧;
  4. 静态变量又分为静态局部变量和静态全局变量;局部变量属于动态存储方式,但静态局部变量则属于静态存储方式,系统自动为静态变量赋初值,而自动变量的初值不确定;全局变量本身就是静态存储方式,而静态全局变量与全局变量区别在于:全局变量的作用域是整个源程序,而静态全局变量作用域则是定义该变量的源文件;
  5. 总结:静态局部变量实际上改变了局部变量(默认自动变量)的存储方式,从而改变了生存期和作用域;静态全局变量仅改变了全局变量的作用域,限制了全局变量的使用范围;
  6. 外部类型就是定义在所有函数之外的全局变量,存储于静态存储区,与静态变量一样,系统自动为未初始化的变量赋0值;

C语言中的存储类型