9
votes

Différence entre appel par référence et appel par valeur

Dupliqué possible:
Différence entre le paramètre de valeur et le paramètre de référence?

Quelle est la différence entre appel par référence et appeler par valeur?

c c++

1 commentaires

Beaucoup de gens semblent avoir suffisamment de représentant pour fermer les questions et pourtant ne pas comprendre la raison "Pas une vraie question" de fermer. C'est clairement une vraie question avec une réponse précise, quelle que soit la raison pour laquelle on se demande.


5 Réponses :


1
votes

Les arguments passés à la fonction peuvent être de deux types, nommément 1. Valeurs passées 2. Adresse passée

Le premier type fait référence à l'appel par la valeur et le deuxième type fait référence à l'appel par référence. Par exemple, envisagez le programme1 p>

x=50 y=70 got printed.


3 commentaires

WOW, paramètre de style K & R passant :)


Je ne savais pas que les gens sont toujours programmés dans K & R C. :-)


@ Messa, @ Alok, j'essayais d'expliquer le concept, personnellement, je n'ai jamais codé dans C après collège et surprendre, je ne savais pas que ceci est le style K & R pour me faire savoir :)



0
votes

Appelez par valeur:

  void foo( int* x ) {
      cout << *x << endl;
      *x = 4;
  }

  int someVar = 5;
  foo( &someVar );


0 commentaires

12
votes

en C, il n'y a pas d'appel par référence. Le plus proche que vous puissiez obtenir est de prendre une adresse et de transmettre une copie de cette adresse (par valeur - voir ci-dessous).

en C ++, appelez par référence transmet une référence à un objet (un alias pour l'objet d'origine). Généralement, cela sera mis en œuvre comme adresse de l'objet, bien que ce n'est pas garanti.

appel de valeur signifie prendre une valeur de quelque sorte et transmettre une copie de cette valeur à la fonction.

La différence de base est que lorsque vous transmettez un paramètre par valeur, la fonction ne reçoit que A copier de l'objet d'origine, il ne peut donc rien faire pour affecter l'objet d'origine. Avec Pass par référence, il reçoit une référence à l'objet d'origine, il a donc accès à l'objet d'origine, pas une copie de celui-ci - à moins que ce ne soit une référence de const, elle peut modifier l'objet d'origine (pour un exemple).


0 commentaires

3
votes

brièvement, appelez par référence est quand une fonction peut modifier ses arguments: xxx

in "appel par référence", l'impression ci-dessus imprimera 2 deux fois.

appel par valeur est quand une fonction reçoit une copie de l'argument qui lui est transmise, de sorte que toute modification ne soit pas vue par l'appelant. Avec f (x) défini comme ci-dessus, appeler par valeur serait: xxx

dans ce qui précède, à l'intérieur f (x) < / code>, l'appel d'impression imprimerait 2 , mais cela ne modifie que la copie de x que f () a obtenu, donc dans l'appelant , x est toujours un, et le second impression () imprime 1 .


0 commentaires

0
votes

Dans l'appel par référence, vous obtiendrez l'instance d'une variable. Après avoir modifié les paramètres de fonction, dans ce cas, votre variable changera dans la méthode d'appel. Dans la valeur de l'appel, vous obtiendrez la copie de l'instance. Et dans ce cas, des changements de variable de paramètre n'influenceront pas sur la variable dans la méthode d'appel


0 commentaires