c++++函數(shù)參數(shù)傳遞分為值傳遞和引用傳遞,值傳遞不會修改函數(shù)中變量,優(yōu)點是低內(nèi)存消耗,缺點是針對大數(shù)據(jù)結(jié)構(gòu)復(fù)制開銷大。引用傳遞優(yōu)點是避免了大數(shù)據(jù)結(jié)構(gòu)的復(fù)制開銷,缺點是可能修改調(diào)用函數(shù)中變量。
C++ 函數(shù)參數(shù)傳遞方法
C++ 中,函數(shù)參數(shù)的傳遞方式分為 值傳遞 和 引用傳遞。每種方法都有其優(yōu)點和缺點,如下所示:
值傳遞
優(yōu)點:
不會修改調(diào)用函數(shù)中的變量
在函數(shù)內(nèi)部對參數(shù)進(jìn)行的修改不會影響調(diào)用函數(shù)中的值
內(nèi)存消耗少
缺點:
針對大型數(shù)據(jù)結(jié)構(gòu),會產(chǎn)生大量的復(fù)制開銷
對于基本數(shù)據(jù)類型(如 int、float 等),效率較低
引用傳遞
優(yōu)點:
避免了大型數(shù)據(jù)結(jié)構(gòu)的復(fù)制開銷
針對基本數(shù)據(jù)類型,效率更高
缺點:
可能會修改調(diào)用函數(shù)中的變量
需要謹(jǐn)慎避免懸空引用
實戰(zhàn)案例
值傳遞
void swapVal(int a, int b) { int temp = a; a = b; b = temp; } int main() { int x = 5, y = 10; swapVal(x, y); // 調(diào)用函數(shù),值傳遞 cout << "x: " << x << ", y: " << y << endl; }
登錄后復(fù)制
輸出:
x: 5, y: 10
登錄后復(fù)制
引用傳遞
void swapRef(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int x = 5, y = 10; swapRef(x, y); // 調(diào)用函數(shù),引用傳遞 cout << "x: " << x << ", y: " << y << endl; }
登錄后復(fù)制
輸出:
x: 10, y: 5
登錄后復(fù)制