C : La différence entre l'argument passant "Par valeur" et "Par référence"
En C , l'interaction entre un paramètre et son L’argument est déterminé par le type du paramètre. Bien que la transmission de valeurs soit typique, la transmission de références offre des avantages distincts dans certains scénarios.
Le raisonnement derrière la transmission de références
La transmission de références sert deux objectifs principaux :
Exemple : Modification de la valeur de l'argument
Considérez la fonction suivante :
<code class="cpp">void get5and6(int *f, int *s) { *f = 5; *s = 6; }</code>
Ici, les pointeurs sont utilisés pour passer des arguments par référence. En appelant la fonction avec :
<code class="cpp">int f = 0, s = 0; get5and6(&f, &s);</code>
f et s seront respectivement définis sur 5 et 6, car la fonction modifie les valeurs pointées par les références.
Alternativement, en utilisant des références donne directement le même résultat :
<code class="cpp">void get5and6(int &f, int &s) { f = 5; s = 6; }</code>
Appeler la fonction avec :
<code class="cpp">int f = 0, s = 0; get5and6(f, s);</code>
produit le même effet.
Exemple : Optimisation des performances
Considérons une fonction qui enregistre l'état du jeu :
<code class="cpp">void SaveGame(GameState& gameState) { gameState.update(); gameState.saveToFile("save.sav"); }</code>
Sans passage de référence, une copie de l'objet GameState serait créée à l'intérieur de la fonction, consommant potentiellement des ressources importantes. En passant par référence, seule l'adresse de l'objet est copiée, évitant ainsi la surcharge liée à la copie de son contenu volumineux.
Quand utiliser les références
Le passage de référence est avantageux lorsque :
Const Références
Les références Const garantissent que l'argument ne peut pas être modifié dans la fonction. Ils sont utilisés pour imposer un accès en lecture seule à certains paramètres.
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!