Maison  >  Article  >  développement back-end  >  Comment l'appel par valeur affecte-t-il la modification des arguments en C ?

Comment l'appel par valeur affecte-t-il la modification des arguments en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 12:06:02727parcourir

How Does Call-by-Value Affect Argument Modification in C  ?

Comprendre l'appel par valeur en C

Dans cet exemple d'appel par valeur, une fonction appelée changeValue() prend un entier argument, qui représente une copie de l’argument réel transmis par la fonction main(). Lorsque la fonction change la valeur de l'argument à 6, elle modifie la copie et non la valeur originale stockée dans la fonction main().

En effet, l'appel par valeur crée une nouvelle copie de l'argument et le transmet à la fonction. Par conséquent, toute modification apportée à la copie à l'intérieur de la fonction n'affectera pas la valeur d'origine.

Résoudre le problème à l'aide de l'appel par référence

Pour modifier l'argument d'origine envoyé depuis main(), nous devons utiliser l’appel par référence. Cela implique de transmettre une référence (un alias) à l'argument réel, plutôt qu'une copie.

Dans l'exemple, cela peut être réalisé en changeant la signature de la fonction changeValue() en :

void changeValue(int &value)

En utilisant une esperluette (&) avant le type d'argument, nous indiquons que la fonction reçoit une référence à la variable d'origine. Toute modification apportée à la référence affectera directement l'argument d'origine dans main().

Code révisé :

#include 
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;
}

Avec ce changement, lorsque changeValue() définit la référence à 6, la valeur d'origine dans main() sera modifiée en 6, ce qui donnera la sortie "La valeur est : 6.".

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