Dupliqué possible: strong>
Différence entre le paramètre de valeur et le paramètre de référence? P> blockQuote>Quelle est la différence entre appel par référence et appeler par valeur? p>
5 Réponses :
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.
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 :)
Appelez par valeur:
void foo( int* x ) {
cout << *x << endl;
*x = 4;
}
int someVar = 5;
foo( &someVar );
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). P>
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. P>
appel de valeur signifie prendre une valeur de quelque sorte et transmettre une copie de cette valeur à la fonction. P>
La différence de base est que lorsque vous transmettez un paramètre par valeur, la fonction ne reçoit que A copier em> 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). p>
brièvement, appelez par référence em> est quand une fonction peut modifier ses arguments: in "appel par référence", l'impression ci-dessus imprimera appel par valeur em> 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 dans ce qui précède, à l'intérieur 2 code> deux fois. p> f (x) code> défini comme ci-dessus, appeler par valeur serait: p> f (x) < / code>, l'appel d'impression imprimerait 2 code>, mais cela ne modifie que la copie de x code> que f () code> a obtenu, donc dans l'appelant , x code> est toujours un, et le second impression () code> imprime 1 code>. p> p>
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 p>
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.