1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
void Echange(int *pGauche, int *pDroite)
{
/*Note que le temporaire lui-même n'est pas un pointeur.
C'est un int, vu qu'on échange les int pointés.*/
int temporaire = *pGauche;
*pGauche = *pDroite;
*pDroite = temporaire;
}
int main(void)
{
int a = 1;
int b = 42;
int *pa;
int *pb;
pa = &a; /*On initialise pa avec l'adresse de a.
pa pointe maintenant sur a.*/
pb = &b; /*On initialise pb avec l'adresse de b.
pb pointe maintenant sur b.*/
/*Note: la norme exige de caster un pointeur en void* avant de le passer à printf.
C'est à cause de certaines machines où les pointeurs n'ont pas tous la même taille.*/
printf("Avant : a=%d, b=%d, pa=%p, pb=%p\n", a, b, (void*)pa, (void*)pb);
Echange(pa, pb);
printf("Après : a=%d, b=%d, pa=%p, pb=%p\n", a, b, (void*)pa, (void*)pb);
return 0;
} |
Partager