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

C語言函數呼叫機制詳解:參數傳遞、回傳值與函數原型宣告

     編輯:關於C語言

基本呼叫範例

範例 1:單一參數傳值呼叫


void try_func(int i)  // i 為形式參數
{
    // 函數主體
}

int main(void)
{
    int number = 1;      // 實際參數
    try_func(number);    // 傳值呼叫:number 的值複製給 i
    return 0;
}

實際參數可以是常數、變數或運算式。形式參數與實際參數佔用不同記憶體位置,函數內修改形式參數不影響實際參數。

範例 2:參數修改僅影響區域副本


void try_func(int base)
{
    base = base + 5;  // 修改區域變數
}

int main(void)
{
    int number = 1;
    try_func(number);
    // number 仍為 1
    return 0;
}

範例 3:帶回傳值的函數


float duff(int k);  // 函數原型宣告

int main(void)
{
    int n = 10;
    float q = duff(n);  // 接收回傳值
    return 0;
}

float duff(int k)     // 函數定義
{
    float tor = k * 1.5;
    return tor;       // 回傳 float
}

呼叫端必須先見到函數原型(回傳型別、名稱、參數型別),編譯器才能正確產生呼叫碼與型別檢查。

關鍵觀念總結

  1. 傳值呼叫:C 語言預設為傳值,實際參數值複製給形式參數。
  2. 模擬傳址:若需修改呼叫端變數,傳遞指標(位址):void func(int *p),呼叫 func(&var)。
  3. 函數原型:建議置於標頭檔,所有呼叫端 #include 共享。
  4. 回傳值:return 運算式;void 函數可省略或寫 return;。
  5. 遞迴:函數可呼叫自身,必須有終止條件避免堆疊溢位。

進階:陣列與結構體作為參數

  • 陣列參數退化為指標:void func(int arr[]) 等同 void func(int *arr),需另傳長度。
  • 結構體傳值會複製整個結構(較大時效率低),慣用傳指標:void func(const Struct *s)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved