5、数组-变量的存储类型和作用域二

149 阅读2分钟

变量的存储类型

存储类型决定变量在内存中的存储位置。在计算机的内存和CPU的寄存器都可以存储变量。
C语言中变量的存储类型分为自动型(auto)、寄存器型(register)、外部型(extern)、和静态型(static)四种。变量的存储方式分为两大类,即静态存储和动态存储。

静态存储

在编译时由系统分配固定的存储空间,直到程序运行结束后才释放所占用的存储空间

动态存储

在程序运行时根据需要动态地分配和释放存储空间。

注:自动型变量和寄存器型变量属于动态存储;外部变量和静态变量属于动态存储。


寄存器型变量

【格式】 register 数据类型 变量表; 一般情况下,变量的值都存储在内存中。为了提高执行效率,C语言允许将频繁使用的局部变量的值存储到CPU的通用寄存器,这种变量称为寄存器型变量。定义变量时若声明存储类型为register,则定义的变量为寄存器型变量。寄存器型变量一般是在函数中定义的,退出函数后则释放所占用的CPU寄存器。寄存器型变量可以进行初始化。通常,寄存器变量使用较少。

register int a

注:
1、只有局部变量才能定义为寄存器型变量,全局变量不行。
2、对于占用字节数较多的变量,如long、float和double型的变量一般不能定义为寄存器型变量。
3、由于CPU具有的通用寄存器数量有限,所以允许定义的寄存器型变量的数量也有限,不能定义任意多个寄存器型变量,具体限制取决于运行环境和编译系统。

外部型变量

【格式】 extern 数据类型 变量表;

说明:外部型变量是专门用于在多个编译单元之间传递数据的。

关键字 extern 与 auto、static、register 的用法不同,后三个关键字是在定义变量时加关键字,而extern是对已经定义的全局变量进行声明。