| 維度 | 類別 |
|---|---|
| 來源 | 庫函數 / 使用者自訂函數 |
| 回傳值 | 有回傳值 / 無回傳值 |
| 參數 | 無參 / 有參 |
| 庫函數功能 | 字元分類、轉換、目錄路徑、診斷、圖形、I/O、介面、字串、記憶體、數學、日期時間、進程控制等 |
// 定義
int add(int a, int b) { return a + b; }
// 宣告(原型)
int add(int, int); // 參數名可省略
// 若定義在 main 之前,可省略宣告
void modify(int arr[], int n) { arr[0] = 99; } // 實際傳首址
int a[5] = {1,2,3,4,5};
modify(a, 5); // a[0] 變為 99,原陣列被修改
陣列名退化為指標,形參與實參共享記憶體。長度不一致不報錯但邏輯危險。
| 類別 | 關鍵字 | 作用域 | 生命週期 | 預設值 |
|---|---|---|---|---|
| 自動區域 | auto | 區塊內 | 呼叫期間 | 不定 |
| 暫存器 | register | 區塊內 | 呼叫期間 | 不定 |
| 靜態區域 | static | 區塊內 | 程式全期 | 0 |
| 外部/全域 | extern | 全檔案/跨檔案 | 程式全期 | 0 |
| 靜態全域 | static | 僅定義檔案 | 程式全期 | 0 |
auto 可省略,區域變數預設即為 autostatic 修飾區域變數:改變儲存類別(動態→靜態),作用域不變,生命週期變全程,保留上次值static 修飾全域變數:限制作用域(外部連結→內部連結),防止符號衝突register 建議編譯器置於 CPU 暫存器,現代編譯器多自動優化,實際常視同 autoint main(int argc, char *argv[])函數是 C 程式模組化基石。掌握值傳遞機制、陣列傳址特性、遞歸終止條件、四大儲存類別差異,能寫出高效、可維護的模組化代碼。