c++++ 中函數參數的傳遞方式包括:傳遞值(復制實參的值)傳遞引用(直接操作實參的值)傳遞指針(直接訪問實參的地址)傳遞 const 引用(讀取實參的值,但不能修改)
C++ 函數參數傳遞方式的常見編程技巧
在 C++ 中,函數參數可以通過四種方式傳遞:傳遞值、傳遞引用、傳遞指針以及傳遞 const 引用。對于不同的需求,有不同的傳遞方式更合適。
傳遞值(Call by Value)
傳遞值是最簡單和最直接的方式,即在函數內部復制實參的值。優點是避免了對實參的更改影響到實參本身的值。示例:
void increment(int num) { num++; // 只能更改 num 的局部副本 } int main() { int x = 5; increment(x); // x 的副本被傳遞給 increment() cout << x; // 輸出 5,x 不會改變 }
登錄后復制
傳遞引用(Call by Reference)
傳遞引用可以讓函數內部直接操作實參的值。優點是避免了值的傳遞過程,提高了效率。示例:
void increment(int& num) { num++; // 直接更改實參的值 } int main() { int x = 5; increment(x); // x 的引用被傳遞給 increment() cout << x; // 輸出 6 }
登錄后復制
傳遞指針(Call by Pointer)
傳遞指針可以讓函數內部直接訪問實參的地址。優點是能對指針指向的內容進行更靈活的操作。示例:
void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int main() { int x = 5, y = 7; swap(&x, &y); // 傳遞 x 和 y 的地址 cout << x << " " << y; // 輸出 7 5 }
登錄后復制
傳遞 const 引用(Call by const Reference)
傳遞 const 引用和傳遞引用類似,但函數不能修改實參的值。優點是避免了意外的修改,提高了代碼安全性。示例:
void print(const int& num) { cout << num; // 只讀訪問實參 } int main() { int x = 5; print(x); // x 的 const 引用被傳遞給 print() }
登錄后復制
實戰案例
在計算圓的面積時,函數的參數可以是圓的半徑。為了避免傳遞值帶來的額外開銷,可以選擇傳遞引用的方式,讓函數直接操作半徑的值。
#include <cmath> double calculateArea(double& radius) { return M_PI * radius * radius; } int main() { double radius; cout << "Enter the radius of the circle: "; cin >> radius; cout << "The area of the circle is: " << calculateArea(radius) << endl; }
登錄后復制