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

C語言 static 關鍵字三大用法與生命週期詳解

     編輯:C 語言問答

1. 函數內區域靜態變數

void counter()
{
    static int cnt = 0; // 僅初始化一次,存儲於靜態區
    printf("%d ", ++cnt);
}

int main()
{
    counter(); // 1
    counter(); // 2
    counter(); // 3
}
  • 生命週期:程式全程;作用域:僅限函數內。
  • 預設初始化為 0。

2. 檔案域靜態變數/函數

// file1.c
static int internal_var = 10;      // 僅本檔可見
static void internal_func() { ... } // 僅本檔可呼叫
  • 限制連結可見性 (internal linkage),避免符號衝突,實現封裝。

3. 類別/結構體靜態成員 (C++ / C 模擬)

C 無原生類別,但可模擬:

// counter.h
#ifndef COUNTER_H
#define COUNTER_H
void counter_increment(void);
int counter_get(void);
#endif

// counter.c
#include "counter.h"
static int count = 0; // 模組私有狀態

void counter_increment(void) { count++; }
int counter_get(void) { return count; }

記憶體佈局對比

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
儲存類別區段生命週期預設初值
auto (區域)堆疊函數呼叫期間不定 (垃圾值)
static (區域).data/.bss程式全程0
static (全域).data/.bss程式全程0
extern (全域).data/.bss程式全程0