Question basique sur les pointeurs
Bonjour à tous,
Question très basique que je souhaite poser sur les pointeurs en C++:
Je comprends très bien que cette fonction n'échange pas les valeurs des deux int:
Code:
1 2 3 4 5 6 7
| void Echange (int a, int b)
{
int c;
c=a;
a=b;
b=c;
} |
Car d'après ce que j'ai compris (corrigez-moi si je me trompe), les paramètres sont des copies des variables.
En revanche, je reste convaincu que celle-ci devait marcher:
Code:
1 2 3 4 5 6 7
| void EchangeParPointeurMarchePas (int* a, int* b)
{
int* c;
c=a;
a=b;
b=c;
} |
Alors que celle-ci marche:
Code:
1 2 3 4 5 6 7
| void EchangeParPointeur (int* a, int* b)
{
int c;
c=*a;
*a=*b;
*b=c;
} |
Selon moi, la deuxième méthode devrait marcher puisque je donne à la méthode deux pointeurs sur int. Je donne dans la méthode à chacun des deux pointeurs l'adresse de l'autre.
Pourquoi EchangeParPointeur(&a,&b) marche et pas EchangeParPointeurMarchePas(&a,&b)?
Merci d'avance d'éclairer ma lanterne.