Toute permutation effectuée si vous passez par la valeur est seulement affectée ou vue dans la fonction dans laquelle ils sont passés et non le code appelant. En outre, une fois que vous revenez au principal, vous verrez que a et b n'ont pas changé. C'est pourquoi lors de l'échange de numéros, vous voulez passer par réf.
Si vous demandez simplement si c'est ce que cela s'appellerait, alors oui vous avez raison, vous passeriez en valeur.
est un exemple:
#include <stdio.h>
void swapnum(int &i, int &j) {
int temp = i;
i = j;
j = temp;
}
void swapByVal(int i, int j) {
int temp = i;
i = j;
j = temp;
}
int main(void) {
int a = 10;
int b = 20;
swapnum(a, b);
printf("swapnum A is %d and B is %d\n", a, b);
swapByVal(a, b);
printf("swapByVal A is %d and B is %d\n", a, b);
return 0;
}
Exécutez ce code et vous devriez voir que les changements ne persistent que en échangeant par référence, qui est après que nous sommes revenus Retour à les valeurs sont permutées. Si vous passez par la valeur, vous verrez qu'appeler cette fonction et revenir à la main qu'en fait a et b n'ont pas permuté.
Vous avez oublié de nommer votre deuxième méthode swapnum swapByVal – RickNotFred
@RichNotFred - Je dirais que c'est encore assez proche de lundi alors s'il vous plaît pardonnez-moi :). Edité cependant. – JonH