C語言函數參數傳遞本質上只有「傳值」,但可透過指標模擬傳址/傳引用行為。常見三種寫法:
// 實參
sum(a, b);
// 形參
int sum(int a, int b) { ... }
函數接收副本,修改不影響原變數。
// 實參
sum(&a, &b);
// 形參
int sum(int *a, int *b) { ... }
傳遞記憶體位址,函數可透過解參考修改原變數值。
// 形參(C++ 語法)
int sum(int &a, int &b) { ... }
C 語言無 & 參數語法,此為 C++ 特性。C 中若見此寫法,實為指標操作的語法糖誤解。
| 方式 | 語法 | 記憶體行為 | 適用場景 |
|---|---|---|---|
| 傳值 | func(int x) | 複製值到棧框 | 小型資料、不需修改原值 |
| 傳址 | func(int *x) | 傳遞位址,可修改原值 | 大型結構、需修改呼叫端變數 |
理解指標與記憶體模型是掌握 C 語言參數傳遞的關鍵。