首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言進階:靜態變數與暫存器變數深度解析

     編輯:C 語言基礎

靜態變數

使用 static 宣告的變數屬於靜態儲存方式,生命週期為整個程式執行期間。但注意:外部變數雖屬靜態儲存,不加 static 不稱為靜態變數。

1. 靜態區域變數

在區域變數前加 static 即成為靜態區域變數。

static int a, b;
static float array[5] = {1,2,3,4,5};

特性:

  1. 生命週期為整個程式:不會隨函數呼叫結束而銷毀。
  2. 作用域仍限於定義它的函數內:離開函數雖存在但不可存取。
  3. 可初始化結構類型:未初始化時,基本類型自動歸 0,陣列元素亦同。
  4. 保留上次呼叫的值:多次呼叫函數時可累計數值,適合需記憶狀態的場合,比全域變數更安全。

範例:累計呼叫次數

void f() {
    static int j = 0;
    ++j;
    printf("%d\n", j);
}
// 呼叫 5 次輸出: 1 2 3 4 5

2. 靜態全域變數

在全域變數前加 static,限制其作用域僅在定義的原始檔內有效,避免多檔案專案中命名衝突。

暫存器變數

使用 register 宣告,建議編譯器將變數放入 CPU 暫存器,減少記憶體存取,提升效率。適合迴圈計數器、頻繁存取的區域變數。

register int i, s = 0;
for (i = 1; i <= 200; i++) s += i;

注意事項

  • 僅限區域自動變數與形式參數。
  • Turbo C 等微機編譯器實際視同自動變數處理,速度不一定提升,主要為相容標準 C。
  • 暫存器數量有限,能定義的變數個數受限。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved