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

C語言 static 關鍵字深度解析:靜態變數與靜態函數

     編輯:關於C語言

static 修飾變數

1. 修飾全域變數:內部連結

static int flag1 = 0;  // 僅本檔案可見
int flag2 = 0;         // 外部連結,他檔案可用 extern 存取
  • 皆儲存於全域資料區
  • static 限制連結可見性,防止符號衝突

2. 修飾區域變數:靜態儲存期

void func(void) {
    static int temp1 = 0;  // 全域資料區,具記憶性
    int temp2 = 0;         // 堆疊區,函數結束即銷毀
    // ...
}
  • temp1 生命週期 = 程式執行期間,但可見範圍僅限函數內
  • 下次呼叫保留上次修改值(記憶性)
  • temp2 每次呼叫重新初始化

static 修飾函數:內部連結

static inline void enable_noirq(void) {
    // 僅本檔案可呼叫
}
  • 隱藏實作細節,避免跨檔案符號衝突
  • Linux 核心大量使用此模式
  • 各檔案可定義同名 static 函數無衝突

總結比較

修飾對象儲存區域可見範圍生命週期核心用途
全域變數全域資料區僅本檔案程式執行期間模組封裝、避免符號汙染
區域變數全域資料區僅所在函數程式執行期間狀態保持、計數器、單例模式
函數程式碼區僅本檔案程式執行期間內部介面、隱藏實作

善用 static 是撰寫模組化、可維護 C 程式的關鍵技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved