Maison  >  Article  >  développement back-end  >  La différence essentielle entre le passage par valeur et le passage par référence en C++

La différence essentielle entre le passage par valeur et le passage par référence en C++

PHPz
PHPzoriginal
2024-04-12 12:00:02551parcourir

La différence entre le passage de valeur et le passage de référence en C++ : le passage de valeur crée une copie du paramètre et n'affecte pas la variable d'origine ; le passage de référence exploite directement le paramètre et la modification est reflétée dans la variable d'origine. Cas pratique : échanger deux valeurs entières. Le passage par valeur n'échangera pas, mais le passage par référence le sera.

C++ 值传递和引用传递的本质区别

La différence essentielle entre passer par valeur et passer par référence en C++

En C++, lors du passage des paramètres de fonction, il existe deux options principales : passer par valeur et passer par référence. La différence fondamentale entre ces deux méthodes de transmission est que le passage par valeur crée une copie des paramètres, tandis que le passage par référence opère directement sur les paramètres transmis.

Pass by value

En pass by value, une copie de la valeur du paramètre est transmise à la fonction. Cela signifie que toute modification apportée par la fonction à la copie des arguments passés n'affectera pas les variables d'origine.

void PrintValue(int num) {
  num++;
}

int main() {
  int x = 5;
  PrintValue(x);  // 传递 x 的副本
  cout << x;  // 输出 5,因为原始值不受影响
}

Pass par référence

Dans le passage par référence, la référence du paramètre passé à la fonction est passée à la fonction. Cela signifie que la fonction opère directement sur les arguments passés et que toute modification sera reflétée dans les variables d'origine.

void PrintReference(int& num) {
  num++;
}

int main() {
  int x = 5;
  PrintReference(x);  // 传递 x 的引用
  cout << x;  // 输出 6,因为原始值已被修改
}

Cas pratique

Un cas pratique pour illustrer la différence entre passage de valeur et passage de référence : échanger les valeurs de deux entiers :

Passer de valeur :

// 值传递不会交换原始变量的值
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,原始值没有交换
}

Passage de référence :

// 引用传递交换原始变量的值
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,原始值已交换
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn