首頁  >  文章  >  後端開發  >  C++ 值傳遞和引用傳遞的本質區別

C++ 值傳遞和引用傳遞的本質區別

PHPz
PHPz原創
2024-04-12 12:00:02539瀏覽

C 中值傳遞和引用傳遞的差異:值傳遞建立參數副本,不會影響原始變數;引用傳遞直接操作參數,修改反映在原始變數中。實戰案例:交換兩個整數值,值傳遞不會交換,而引用傳遞會。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn