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; }
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; }
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!