C语言中,变量都是有一定的生存周期的,所谓生存周期指的是从分配到释放的时间间隔。为变量分配内存相当于变量的诞生,释放其内存相当于变量的死亡。从诞生到死亡就是一个变量的生命周期。
根据定义方式的不同,变量的生命周期有三种形式:
1. 自动存储期
2. 静态存储期
3. 自定义存储期
自动存储期
在栈内存中分配的变量,统统拥有自动存储期,因此也都被称为自动变量。这里自动的含义,指的是这些变量的内存管理不需要开发者操心,都是全自动的:在变量定义处自动分配,出了变量的作用域后自动释放。
- 以下三个概念是等价的:
- 自动变量:从存储期的角度,描述变量的时间特性。
- 临时变量:同上。
- 局部变量:从作用域的角度,描述变量的空间特性。
可以统一把它们称为栈变量,下面是示例代码:
int main()
{
int a, b; // 自动存储期
static int c; // 加了static的局部变量不再是栈变量,而是静态数据了
f(a, b);
}
void f(int x, int y) // 自动存储期
{
}