Maison > développement back-end > C++ > Pourquoi ne puis-je pas modifier les paramètres d'entrée dans les fonctions C/C à l'aide de l'appel par valeur ?

Pourquoi ne puis-je pas modifier les paramètres d'entrée dans les fonctions C/C à l'aide de l'appel par valeur ?

Mary-Kate Olsen
Libérer: 2024-11-13 15:49:02
original
889 Les gens l'ont consulté

Why Can't I Modify Input Parameters in C/C   Functions Using Call-by-Value?

Pourquoi l'appel par valeur ne parvient pas à mettre à jour les paramètres d'entrée

En C/C, les paramètres de fonction sont généralement transmis par valeur, ce qui signifie que une copie de la variable d'entrée est créée et envoyée à la fonction. Cela implique que toute modification apportée au sein de la fonction n'affecte que la copie locale et non la variable d'origine.

Considérez l'exemple :

#include <iostream>

using namespace std;

void changeValue(int value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int value) {
  value = 6;
}
Copier après la connexion

Ce code tente de modifier la valeur du paramètre d'entrée. dans la fonction changeValue. Cependant, la sortie reste 5, même si la fonction modifie la copie locale en 6.

En effet, la fonction changeValue reçoit une copie de la variable de valeur de main(). La fonction opère ensuite sur cette copie locale, qui est indépendante de la variable d'origine dans main(). Par conséquent, les modifications apportées au sein de la fonction ne sont pas répercutées sur la variable d'origine.

Utilisation de l'appel par référence pour modifier les paramètres d'entrée

Pour modifier la variable d'origine à partir d’une fonction, l’appel par référence doit être utilisé. Cela permet à la fonction d'accéder et de modifier la variable réelle en mémoire, plutôt qu'une simple copie :

#include <iostream>

using namespace std;

void changeValue(int &value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int &value) {
  value = 6;
}
Copier après la connexion

Dans cet exemple, la fonction changeValue prend une référence à la variable de valeur, représentée par l'esperluette (& ). Cela permet à la fonction d'accéder et de modifier directement la variable d'origine. Par conséquent, lorsque la fonction définit la valeur sur 6, elle modifie la variable réelle dans main() et la sortie reflète correctement le changement.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal