Quelles sont les différences entre un pointeur et une référence en C++ ?
Bonjour, collègues ! Je viens de commencer à apprendre le C++ après Java et Python, et je suis confus au sujet des pointeurs et des références. Apparemment, les deux permettent de travailler avec des objets sans copie, mais je ne comprends pas quand utiliser quoi.
Voici un exemple de mon code. J'ai écrit une fonction qui échange les valeurs de deux variables. D'abord, j'ai essayé d'utiliser des références :
```cpp
void swap_ref(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
```
Ensuite, j'ai appris qu'on peut faire la même chose avec des pointeurs :
```cpp
void swap_ptr(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
Les deux versions fonctionnent. Mais j'ai remarqué qu'avec les pointeurs, il faut mettre des astérisques et des esperluettes partout lors de l'appel, alors qu'avec les références, non. J'ai aussi entendu dire que les références ne peuvent pas être réaffectées, contrairement aux pointeurs. Et que les références doivent toujours être initialisées, alors que les pointeurs peuvent être nullptr.
Ma question principale : quelles sont les différences fondamentales entre les pointeurs et les références ?
No answers yet.
Connectez-vous pour laisser une réponse