Maison  >  Article  >  développement back-end  >  Explication détaillée des méthodes de passage des paramètres de fonction C++ : passage par valeur et passage par référence

Explication détaillée des méthodes de passage des paramètres de fonction C++ : passage par valeur et passage par référence

王林
王林original
2024-04-12 10:51:01808parcourir

Les méthodes de transmission de paramètres C++ sont divisées en transmission de valeurs et transmission de références. Le passage par valeur crée une copie des paramètres de la fonction sans affecter les variables d'origine ; le passage par référence exploite directement les variables d'origine. Le choix dépend de vos besoins : protéger la variable d'origine en utilisant le passage par valeur, modifier la variable d'origine ou améliorer l'efficacité en utilisant le passage par référence.

C++ 函数参数的传递方式详解:值传递和引用传递

Explication détaillée des méthodes de passage des paramètres de fonction en C++ : passage par valeur et passage par référence

En C++, les paramètres de fonction peuvent être passés de deux manières : passage par valeur et passage par référence. Comprendre la différence entre ces deux méthodes de transmission est crucial car cela affecte le comportement de la fonction et les arguments passés.

Pass by value

En pass by value, une copie des paramètres de la fonction est transmise à la fonction. Cela signifie que toute modification transmise à la fonction ne sera pas reflétée dans les variables d'origine transmises dans la fonction appelante.

Avantages :

  • Protéger les variables d'origine d'une modification accidentelle
  • Facile à raisonner sur le comportement d'une fonction

Exemple :

void printValue(int x) {
  x *= 2;  // 修改副本
}

int main() {
  int a = 5;
  printValue(a);  // 传递 a 的副本
  std::cout << a << std::endl;  // 输出 5,表明原始变量没有被修改
}

Passage par référence

En passage par référence, la référence du paramètre est passé à la fonction. Cela signifie que toute modification apportée aux paramètres transmis dans la fonction sera reflétée dans les variables d'origine transmises dans la fonction appelante.

Avantages :

  • Réduire les copies de données et améliorer l'efficacité
  • Peut modifier les variables d'origine dans la fonction appelante

Exemple :

void printAndDoubleValue(int& x) {
  std::cout << x << std::endl;  // 输出原始变量
  x *= 2;  // 修改原始变量
}

int main() {
  int a = 5;
  printAndDoubleValue(a);  // 传递 a 的引用
  std::cout << a << std::endl;  // 输出 10,表明原始变量被修改为副本的两倍
}

Quelle méthode de livraison choisir ?

Le choix de la méthode de transmission dépend de la situation spécifique :

  • Si vous devez protéger la variable d'origine ou éviter les copies inutiles, utilisez la transmission par valeur.
  • Si vous devez modifier les variables d'origine dans la fonction appelante ou améliorer l'efficacité, veuillez utiliser le passage par référence.

Cas pratique

Supposons que nous ayons une fonction qui doit changer la casse de la chaîne d'entrée. Nous pouvons utiliser le passage par valeur pour garantir que la chaîne d'entrée n'est pas modifiée, ou le passage par référence pour modifier directement la chaîne d'origine :

// 值传递(输入字符串保持不变)
void printLowercase(const std::string& input) {
  std::cout << input.toLower() << std::endl;
}

// 引用传递(修改原始字符串)
void printUppercase(std::string& input) {
  input.toUpper();
}

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