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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.