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;
}
登錄后復制






