Passer-par-valeur vs passer-par-référence vs-passer-par-valeur-résultat
J'ai cette question, et je suis un peu confus quant à ce qui va être imprimé, en particulier pour le passage par référence. Quelle valeur serait passé à x s'il y a deux paramètres? Merci!
Considérons le programme suivant. Pour chacune de ces méthodes de transmission de paramètre, ce qui est imprimé?
un. Passé par valeur
b. Passé par référence
c. Passé par valeur-résultat
void main()
{
int x = 5;
foo (x,x);
print (x);
}
void foo (int a, int b)
{
a = 2 * b + 1;
b = a - 1;
a = 3 * a - b;
}
Quelle serait votre proposition(es)?
Avez-vous essayé de courir?
C'est une question sur un test, donc je n'ai pas essayé de l'exécuter. Si je devais deviner, je dirais a imprimer 5, b, imprimer 23, et c serait d'imprimer 23. B est ce qui me fait mal, parce que serait-x est définie sur 23 ou serait-il rester au 5 s'il est adopté par référence?
Ce que le diable est "passé par valeur-résultat"? Je me considère comme très bien informés sur le C++, mais toute interprétation de ce que j'ai pensé jusqu'à présent est peu probable.
Alors serait-il imprimer 5, 5 et 23? ou 5, 5 et 5?
Avez-vous essayé de courir?
C'est une question sur un test, donc je n'ai pas essayé de l'exécuter. Si je devais deviner, je dirais a imprimer 5, b, imprimer 23, et c serait d'imprimer 23. B est ce qui me fait mal, parce que serait-x est définie sur 23 ou serait-il rester au 5 s'il est adopté par référence?
Ce que le diable est "passé par valeur-résultat"? Je me considère comme très bien informés sur le C++, mais toute interprétation de ce que j'ai pensé jusqu'à présent est peu probable.
Alors serait-il imprimer 5, 5 et 23? ou 5, 5 et 5?
OriginalL'auteur Strongbuns | 2014-07-23
Vous devez vous connecter pour publier un commentaire.
Les deux premières devrait être assez simple, le dernier est probablement à vous jeter parce que c'est pas vraiment un C++ pris en charge la construction. C'est quelque chose qui a été vu en Fortran, Ada il y a quelques temps. Voir ce post pour plus d'info
Comme pour vos résultats, je pense que c'est ce que vous obtenez:
1)
2)
3) de tenir compte de cette (en C++). Nous allons copie x dans une variable, passer que par référence, puis copier le résultat de revenir à x:
Puisque rien dans le
foo
fonction est de faire quelque chose avecx
directement, votre résultat sera le même que dans le n ° 2.Maintenant, si nous avions quelque chose comme ça pour
foo
Puis le # 2 produirait le même résultat, mais #3 allait sortir de la sorte:
a
etb
distinct copies dans le passage par valeur-résultat? En fait, les deux façons qu'un son, comme arguments contre cette méthode de transmission de... (en gros: Comment indépendants sont passées "références" pour le même objet dans le même appel de fonction et dans quel ordre sont-ils 'copier'?)OriginalL'auteur Ryan J