#include <stdio.h>
int x_a = 0;
void func(void) {
static int x_b = 0;
int x_c = 0;
printf("%3d %3d %3d\n", x_a ++, x_b++, x_c++);
}
int main(void) {
int i;
puts(" ax sx fx");
puts("------------");
for (i = 0; i < 10; i++) {
func();
}
return 0;
}
運作結果:
x_c = 0是因為 當函數func執行結束的時候變量x_c就消失了。它的變量壽命隻在func函數體中存在,每次調用函數結束後 x_c 會自動消失,是以x_c++ 不會增加該變量的值。
總結:
自動存儲期 | 靜态存儲期 | |
生成 | 程式執行到對象聲明的時候建立出相應的對象 | 在程式執行開始執行的時候被建立出來 |
初始化 | 如果不顯示地進行初始化,則該對象會被初始化為不确定的值 | 如果不顯示地進行初始化,則該對象會被初始化為0 |
消失 | 執行到包含該聲明的程式塊的結尾時,該對象就會消失 | 在程式結束的時候消失 |
- 程式執行到對象聲明的時候就建立除了對應的對象。而執行到包含該聲明的程式塊的結尾,也就是大括号}的時候,該對象就會消失。
- 該對象擁有短暫的壽命,如果不對該變量進行初始化,則該對象會被初始化為不确定的值。
- 在程式開始執行的時候,具體地說是在main函數執行之前的準備階段被建立出來,在程式結束的時候消失。
- 該對象擁有 “永久”的壽命,如果不對該變量進行初始化,則該對象會自動初始化為0.