一、四種傳遞方式
- 傳值調用:形參為實參拷貝,函數內修改不影響實參。
- 傳址調用(指針):傳遞地址,函數內可修改實參。
- 引用傳遞:實參別名,語法簡潔,效率同指針,但更安全。
- 全局/成員變量傳遞:利用作用域內的共享變量,效率最高,但非線程安全。
二、各維度對比
| 方式 | 功能(可修改實參) | 傳遞效率 | 執行效率 | 類型安全 | 參數檢查 | 靈活性 | 多線程 |
| 全局變量 | 高 | 高/高 | 高 | 高 | 高 | 高 | 低 |
| 傳值 | 低 | 高/低 | 高 | 高 | 高 | 中 | 高 |
| 指針 | 高 | 低/中 | 低 | 低 | 低 | 高 | 中 |
| 引用 | 高 | 中/高 | 中 | 高 | 高 | 中 | 中 |
三、選擇建議
- 內建類型 (int, float 等) ≤ 4 字節:優先傳值,效率同指針,語義清晰。
- 大對象 (struct, class):優先const 引用 (輸入) 或 引用 (輸出),避免拷貝開銷。
- 需修改實參:用引用 (C++ 首選) 或指針。
- 需可選參數/空值:用指針 (可傳 nullptr)。
- 多態場景:必須用指針/引用 保留動態類型(傳值會切片)。
四、實用技巧
- const 修飾:輸入參數加
const 防止誤修改,增強接口契約。如 void func(const string& s)。
- 默認參數:減少重載,如
void func(int a, int b=10)。
- 參數順序:同名重載函數保持共同參數位置一致,便於調用者記憶。
合理選擇參數傳遞方式是寫出高效、健壯 C++ 代碼的關鍵。