C语言的变量类型
c语言复习之路,之一
变量类型
变量的存储类型
C语言根据变量的存储类型的不同,可以把变量分为:自动变量、静态变量、寄存器变量。
自动变量
- 定义:自动变量是存储在堆栈中的。
- 所有局部变量默认情况下都是自动变量。
- 声明周期:自动变量随所在代码块被执行而创建,随所在代码块执行结束而销毁。如果函数被重复调用,自动变量会被重复创建、销毁。
静态变量
- 定义:静态变量存储于静态内存中,也就是不属于堆栈。
- 哪些是静态变量:
- 所有的全局变量都是静态变量。
- 被关键字
static
修饰的局部变量也是静态变量。 - 声明周期:静态变量在程序运行之前被创建,始终存在。
寄存器变量
- 定义:存储在硬件寄存器中的变量,称为寄存器变量。
- 哪些变量是寄存器变量:
- 被关键字
register
修饰的自动变量都是寄存器变量。 - 只有自动变量才可以是寄存器变量,静态变量(全局变量)不行。
- 寄存器变量只限于
int
、char
和指针
类型使用。
- 被关键字
- 生命周期:调用该函数时占用寄存器中存放的值,当函数结束时释放寄存器,变量消失。
- 使用注意:
- 不能过多使用。如果寄存器使用饱和时,程序将寄存器变量自动转换为自动变量处理。
- 为了提高运算速度,一般会将一些频繁使用的自动变量定义为寄存器变量,这样程序尽可能地为它分配寄存器存放,而不用内存。
register int a; // a就是一个寄存器变量