C 中值傳遞和引用傳遞的差異:值傳遞建立參數副本,不會影響原始變數;引用傳遞直接操作參數,修改反映在原始變數中。實戰案例:交換兩個整數值,值傳遞不會交換,而引用傳遞會。
C 中值傳遞和引用傳遞的本質區別
在C 中,當傳遞函數參數時,有兩個主要選擇:值傳遞和引用傳遞。這兩種傳遞方式之間的基本差異在於,值傳遞會建立參數的副本,而引用傳遞會直接操作傳遞的參數。
值傳遞
在值傳遞中,將參數值的副本傳遞給函數。這意味著函數在傳遞的參數的副本上進行任何修改,都不會影響原始變數。
void PrintValue(int num) { num++; } int main() { int x = 5; PrintValue(x); // 传递 x 的副本 cout << x; // 输出 5,因为原始值不受影响 }
引用傳遞
在參考傳遞中,將傳遞給函數的參數的參考傳遞給函數。這意味著函數直接操作傳遞的參數,任何修改都會反映在原始變數中。
void PrintReference(int& num) { num++; } int main() { int x = 5; PrintReference(x); // 传递 x 的引用 cout << x; // 输出 6,因为原始值已被修改 }
實戰案例
舉個實戰案例來說明值傳遞和引用傳遞的差異:交換兩個整數的值:
值傳遞:
// 值传递不会交换原始变量的值 void SwapValues(int a, int b) { int temp = a; a = b; b = temp; } int main() { int x = 5, y = 10; SwapValues(x, y); cout << x << " " << y; // 输出 5 10,原始值没有交换 }
引用傳遞:
// 引用传递交换原始变量的值 void SwapReferences(int& a, int& b) { int temp = a; a = b; b = temp; } int main() { int x = 5, y = 10; SwapReferences(x, y); cout << x << " " << y; // 输出 10 5,原始值已交换 }
以上是C++ 值傳遞和引用傳遞的本質區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!