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

C 語言函數大全:分類、參數傳遞、遞歸、變數作用域與儲存類別

     編輯:C 語言入門

函數分類

維度類別
來源庫函數 / 使用者自訂函數
回傳值有回傳值 / 無回傳值
參數無參 / 有參
庫函數功能字元分類、轉換、目錄路徑、診斷、圖形、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,原陣列被修改

陣列名退化為指標,形參與實參共享記憶體。長度不一致不報錯但邏輯危險。

函數巢狀呼叫與遞歸

  • C 不允許巢狀定義,但允許巢狀呼叫
  • 遞歸:函數呼叫自身,需基準情況終止
  • 經典範例:階乘、費波那契、漢諾塔

變數作用域與生命週期

類別關鍵字作用域生命週期預設值
自動區域auto區塊內呼叫期間不定
暫存器register區塊內呼叫期間不定
靜態區域static區塊內程式全期0
外部/全域extern全檔案/跨檔案程式全期0
靜態全域static僅定義檔案程式全期0

關鍵細節

  1. auto 可省略,區域變數預設即為 auto
  2. static 修飾區域變數:改變儲存類別(動態→靜態),作用域不變,生命週期變全程,保留上次值
  3. static 修飾全域變數:限制作用域(外部連結→內部連結),防止符號衝突
  4. register 建議編譯器置於 CPU 暫存器,現代編譯器多自動優化,實際常視同 auto
  5. 區塊內可定義變數,作用域限於該區塊
  6. 同名區域變數遮蔽全域變數

main 函數特殊規則

  • 程式入口,唯一,不可被其他函數呼叫
  • 可帶參數:int main(int argc, char *argv[])

總結

函數是 C 程式模組化基石。掌握值傳遞機制、陣列傳址特性、遞歸終止條件、四大儲存類別差異,能寫出高效、可維護的模組化代碼。

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