使用 static 宣告的變數屬於靜態儲存方式,生命週期為整個程式執行期間。但注意:外部變數雖屬靜態儲存,不加 static 不稱為靜態變數。
在區域變數前加 static 即成為靜態區域變數。
static int a, b;
static float array[5] = {1,2,3,4,5};
特性:
void f() {
static int j = 0;
++j;
printf("%d\n", j);
}
// 呼叫 5 次輸出: 1 2 3 4 5
在全域變數前加 static,限制其作用域僅在定義的原始檔內有效,避免多檔案專案中命名衝突。
使用 register 宣告,建議編譯器將變數放入 CPU 暫存器,減少記憶體存取,提升效率。適合迴圈計數器、頻繁存取的區域變數。
register int i, s = 0;
for (i = 1; i <= 200; i++) s += i;