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

C 語言函數參數傳遞機制與返回值完整解析:形參實參、值傳遞、void 型別

     編輯:關於C語言

函數參數傳遞是 C 語言模組化的核心。本文詳細釐清形參/實參記憶體模型、值傳遞語意、返回值機制與 void 型別用法。

一、形參與實參

特性形參實參
出現位置函數定義呼叫點
記憶體配置呼叫時配置,返回時釋放呼叫者既有變數/常數/運算式
作用域僅函數內部呼叫者作用域
值來源由實參複製而來預先具備確定值

二、值傳遞:單向複製,形參變更不影響實參

#include 
int s(int n) {
    for (int i = n-1; i >= 1; i--) n += i;  // 修改形參 n
    printf("inner n = %d\n", n);
    return n;
}
int main(void) {
    int n = 100;
    int total = s(n);
    printf("outer n = %d\n", n);  // 仍為 100
    printf("sum = %d\n", total);
    return 0;
}

輸出:

inner n = 5050
outer n = 100
sum = 5050

形參 n 在堆疊幀中獨立,修改不影響呼叫者的 n。若需修改呼叫者變數,必須傳遞**指標**。

三、返回值機制

  1. 唯一透過 return 運算式; 返回(或 return (運算式);)。
  2. 函數可含多個 return,但單次呼叫僅執行一個。
  3. 返回型別與函數宣告型別不一致時,隱含轉換(如 float → int 截斷)。
  4. 返回型別為 int 時,定義可省略 int(舊式,現代不建議)。

四、void 型別:無返回值函數

void print_sum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) sum += i;
    printf("1+...+%d = %d\n", n, sum);
    // 無 return 或 return; 僅離開
}
  • void 函數不可用於運算式(x = print_sum(10); 編譯錯誤)。
  • 所有無需返回值的函數**應宣告為 void**,提升可讀性與型別安全。

五、進階:指標參數實現「輸出參數」

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