「生存期」描述變量存在的時間,「作用域」描述可見範圍。兩者不同維度,需通過存儲類別說明符明確指定。
| 關鍵字 | 類型 | 存儲方式 |
|---|---|---|
| auto | 自動變量 | 動態 |
| register | 寄存器變量 | 動態 |
| extern | 外部變量 | 靜態 |
| static | 靜態變量 | 靜態 |
完整聲明形式:存儲類別 數據類型 變量名,如 static int a,b;
auto,可省略int a;,引用文件用 extern int a; 告知編譯器不重複分配內存static int a, b;
static float arr[5] = {1,2,3,4,5};
特點:
示例:static int j=0; ++j; printf("%d",j); 多次調用輸出 1,2,3…(自動變量每次輸出 1)。
static 作用不同:局部→改變存儲方式/生存期;全局→限制作用域。
registermain() {
register int i, s=0;
for(i=1; i<=200; i++) s+=i;
printf("s=%d\n", s);
}
限制: