函數定義通用形式
無參函數
類型 函數名() {
類型聲明
語句
}
// 無返回值用 void
void Hello() { printf("Hello,world\n"); }
有參函數
// 現代格式(ANSI C,推薦)
int max(int a, int b) {
if (a > b) return a;
else return b;
}
// 傳統格式(不推薦)
int max(a, b)
int a, b;
{ ... }
函數聲明
類型 函數名(參數類型列表);
// 如 int max(int a, int b);
- 與定義的函數頭一致,末尾加分號
- 調用前必須聲明(或定義在前)
函數調用三種形式
| 形式 | 語法 | 示例 |
| 函數表達式 | 表達式中調用 | z = max(x, y); |
| 函數語句 | 獨立語句調用 | printf("%d", a); |
| 函數實參 | 作為實參傳遞 | printf("%d", max(x, y)); |
參數求值順序
C 標準未規定,編譯器相關。Turbo C 採用右到左求值:
int i = 8;
printf("%d\n%d\n%d\n%d\n", ++i, --i, i++, i--);
// 右到左:i--(8) → i++(7) → --i(7) → ++i(8)
// 輸出:8 7 7 8
注意:輸出順序始終按參數列表左到右,僅求值順序不同。
形參與實參特性
| 特性 | 形參 | 實參 |
| 出現位置 | 函數定義 | 函數調用 |
| 內存分配 | 調用時分配,返回釋放 | 調用前已有確定值 |
| 類型/數量/順序 | 必須與實參嚴格匹配 | 同上 |
| 傳遞方向 | 單向:實參 → 形參 | - |
| 值變化影響 | 形參變化不影響實參 | 實參值不變 |
值傳遞演示
void main() {
int n = 100;
s(n);
printf("n=%d\n", n); // 輸出 100
}
int s(int n) {
for (int i=n-1; i>=1; i--) n += i; // n=5050
printf("n=%d\n", n); // 輸出 5050
}
數組參數特殊性
- 數組名作參數 → 傳遞首元素地址(地址傳遞)
- 形參與實參共享同一數組內存
- 形參修改數組元素 → 實參數組同步變化
理解參數傳遞機制是編寫正確函數接口、避免副作用錯誤的基礎。
- 上一篇文章: C語言函數嵌套調用與遞歸調用機制解析
- 下一篇文章: C語言數組插入算法:有序數組中按大小插入元素實現
Copyright ©
程式碼之家 All Rights Reserved