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

C語言函數參數與返回值:形參實參機制、傳值調用與 void 類型

     編輯:C 語言基礎

函數參數:形參與實參

將函數比作機器:參數 = 原材料,返回值 = 產品。

參數傳遞機制:單向值傳遞

  • 實參的值複製給形參(相當於賦值)
  • 形參變化不影響實參
  • C 語言只有傳值調用,無傳引用(可用指針模擬)

實戰驗證:形參修改不影響實參

#include <stdio.h>

int sum(int n) {
    for (int i = n - 1; i >= 1; i--) n += i;  // 修改形參 n
    printf("函數內 n = %d\n", n);
    return n;
}

int main() {
    int m = 100, total;
    total = sum(m);
    printf("函數外 m = %d\n", m);  // m 仍為 100
    printf("1+...+100 = %d\n", total);
    return 0;
}

運行結果

函數內 n = 5050
函數外 m = 100
1+...+100 = 5050

形參實參匹配規則

  1. 數量一致
  2. 類型兼容(允許隱式轉換,如 int→float,但可能丟失精度)
  3. 順序一致

不匹配導致「類型不匹配」編譯錯誤/警告。

實參形式多樣化

int max(int a, int b);  // 兩 int 形參

max(10, 20);           // 常量作實參
int x=10, y=20;
max(x, y);             // 變量作實參
max(x, 20);            // 混合
max(x+5, y*2);         // 表達式作實參
max(scanf("%d",&x), y); // 函數調用作實參(scanf 返回值)

函數返回值

return 表達式;
return (表達式);
  • 遇到 return 立即結束函數,返回值傳給調用方
  • 函數可有多個 return,但每次調用只執行一個
  • 無 return 或 return; 無表達式 → 返回值不確定(未定義行為)

返回值類型聲明

int max(int a, int b) { ... }      // 返回 int
double avg(int a, int b) { ... }   // 返回 double
void printHello() { ... }          // 無返回值

void 類型:明確表示無返回值

  • void func() 表示不返回有意義數據
  • 調用時不能接收返回值:int x = func(); // 錯誤
  • 可單獨用 return; 提前退出
  • 良好習慣:不需要返回值的函數必須聲明為 void

常見錯誤與最佳實踐

術語全稱特點生命周期
形參形式參數函數定義中的佔位符,無實際數據調用時分配,返回時釋放
實參實際參數調用時傳入的具體數據(常量/變量/表達式/函數調用)調用方管理
錯誤正確做法
忘寫 return 導致隨機返回值所有非 void 函數所有路徑必有 return
用指針修改實參卻忘傳地址需傳遞 &var,形參聲明為指針類型
返回局部變量/數組地址返回動態分配內存、靜態變量、或結構體副本
遞歸缺少基準情況必須有終止條件,防止棧溢出
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved