&
(esperluette)Quand &
est placé après un type dans une déclaration, il crée une référence :
void swap3(int &a, int &b) { ... }
Une référence est comme un "alias" ou un "surnom" pour une variable existante. Elle permet d'accéder et de modifier directement la variable originale sans créer de copie.
Exemple simple :
int original = 5;
int &reference = original; // reference est un alias pour original
reference = 10; // modifie original à travers la référence
// Maintenant original vaut 10
Quand &
est placé devant une variable, il renvoie l'adresse mémoire de cette variable :
swap2(&a, &b); // Passe l'adresse de a et l'adresse de b
*
(astérisque)Quand *
est placé après un type dans une déclaration, il crée un pointeur :
void swap2(int *a, int *b) { ... }
Un pointeur est une variable qui contient l'adresse mémoire d'une autre variable.
Quand *
est placé devant un pointeur, il permet d'accéder à la valeur stockée à l'adresse contenue dans ce pointeur :
int c = *a; // c prend la valeur stockée à l'adresse contenue dans a
*a = *b; // la valeur à l'adresse contenue dans a devient celle à l'adresse contenue dans b
swap1(int a, int b)
: Utilise des copies des valeurs (passage par valeur)