Leçon 20 : Passage par adresse — un swap qui fonctionne
Tu te souviens du swap cassé de la leçon 10 ? La fonction recevait des copies de x et y, échangeait les copies — et l'original restait tel quel. Aujourd'hui on répare : void swap(int *a, int *b) reçoit des adresses, et on l'appelle avec swap(&x, &y);. Écrire via *a et *b change les vraies variables
Demander à un artisan de réparer une photo de ton salon ne servira à rien : il réparera la photo. Le swap de la leçon 10 recevait des 'photos' (des copies). Quand on lui donne l'adresse et la clé (&x), il entre et change le vrai salon.
- passage par valeur
- Le comportement par défaut en C : la fonction reçoit une copie. Changer la copie ne touche pas l'original — c'est pourquoi le swap de la leçon 10 a échoué.
- passage par adresse
- On passe &x au lieu de x. La fonction écrit via le pointeur et change la vraie variable.
- paramètre de sortie
- Un pointeur via lequel la fonction écrit un résultat vers l'extérieur — c'est ainsi qu'on 'retourne' plus d'une valeur.
- pointeur vers struct
- Un pointeur qui contient l'adresse d'une structure : struct Student *s = &st;.
- l'opérateur flèche ->
- s->grade est un raccourci pour (*s).grade : accède à la structure à cette adresse et prends le champ.