void Method(int a, int b) { b = a; }
int main() {
int a = 125, b = 1;
Method(a, b);
cout << b; // 輸出 1,非 125
}
C++ 默認傳值調用:函數參數是實參的副本。Method 內部修改 b 僅影響副本,外部實參 b 不變。
void Method(int a, int& b) { b = a; } // 形參聲明為引用
// 調用不變:Method(a, b); // 實參 b 被修改為 125
void Method(int a, int* b) { *b = a; }
// 調用:Method(a, &b); // 傳遞地址
int Method(int a) { return a; }
b = Method(a); // 明確賦值
| 方式 | 語法 | 可修改實參 | 空值風險 | 適用場景 |
|---|---|---|---|---|
| 傳值 | void f(int x) | 否 | 無 | 只讀輸入 |
| 引用 | void f(int& x) | 是 | 無(必須綁定對象) | 輸出參數、避免拷貝大對象 |
| 指針 | void f(int* x) | 是 | 有(需判空) | C 兼容、可選參數、數組 |
| 返回值 | int f(int x) | 通過賦值 | 無 | 單一輸出、函數式 |
std::vector、std::string)輸入參數用 const T& 避免拷貝。