Maison > développement back-end > C++ > ## C : Quand devez-vous transmettre des arguments par valeur ou par référence ?

## C : Quand devez-vous transmettre des arguments par valeur ou par référence ?

Mary-Kate Olsen
Libérer: 2024-10-30 21:44:02
original
942 Les gens l'ont consulté

##  C  : When Should You Pass Arguments by Value vs. by Reference?

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 :

  • Modification de la valeur de l'argument : Les paramètres de référence permettent aux fonctions de modifier la valeur de leurs arguments. En revanche, les paramètres de valeur créent des copies d'arguments, rendant toute modification isolée au sein de la fonction.
  • Amélioration des performances : Le passage par référence évite d'avoir à copier un objet dans la fonction, ce qui peut considérablement améliorer les performances, en particulier pour les objets volumineux ou complexes.

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Appeler la fonction avec :

<code class="cpp">int f = 0, s = 0;
get5and6(f, s);</code>
Copier après la connexion

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>
Copier après la connexion

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 :

  • L'objet transmis est volumineux ou complexe.
  • La fonction est appelée fréquemment (par exemple, dans une boucle).

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!

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