c++++ 函數(shù)中的引用參數(shù)(本質(zhì)為變量別名,修改引用修改原始變量)和指針參數(shù)(存儲原始變量的內(nèi)存地址,通過解引用指針修改變量)在傳遞和修改變量時(shí)有著不同的用法。引用參數(shù)常用于修改原始變量(尤其是大型結(jié)構(gòu)體),傳遞給構(gòu)造函數(shù)或賦值運(yùn)算符時(shí)避免復(fù)制開銷。指針參數(shù)則用于靈活指向內(nèi)存位置,實(shí)現(xiàn)動態(tài)數(shù)據(jù)結(jié)構(gòu)或傳遞空指針表示可選參數(shù)。
C++ 函數(shù)中引用參數(shù)和指針參數(shù)的高級用法
在 C++ 函數(shù)中,引用參數(shù)和指針參數(shù)允許以不同的方式傳遞和修改變量。了解它們的差異并合理使用至關(guān)重要。
引用參數(shù)
引用參數(shù)本質(zhì)上是變量的別名。對引用參數(shù)所做的任何更改都會反映到原始變量中。
語法:
void func(int& ref_param) { ref_param++; // 修改引用參數(shù)會修改原始變量 }
登錄后復(fù)制
指針參數(shù)
指針參數(shù)存儲原始變量的內(nèi)存地址。通過指針可以訪問并修改原始變量,但不會創(chuàng)建一個(gè)副本。
語法:
void func(int* ptr_param) { *ptr_param++ // 通過解引用指針可以修改原始變量 }
登錄后復(fù)制
使用場景
引用參數(shù):
當(dāng)需要在函數(shù)內(nèi)修改原始變量時(shí)傳遞大型結(jié)構(gòu)體或類對象,避免復(fù)制的開銷將對象作為非 const 引用傳遞給構(gòu)造函數(shù)或賦值運(yùn)算符
指針參數(shù):
當(dāng)需要靈活地指向不同的內(nèi)存位置時(shí)實(shí)現(xiàn)動態(tài)數(shù)據(jù)結(jié)構(gòu),如鏈表傳遞空指針以指示可選參數(shù)
實(shí)戰(zhàn)案例:
使用引用參數(shù)交換兩個(gè)數(shù)
void swap(int& a, int& b) { int temp = a; a = b; b = temp; }
登錄后復(fù)制
使用指針參數(shù)訪問數(shù)組
void printArray(int* arr, int n) { for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout << endl; }
登錄后復(fù)制