Différence entre Pointeur et Référence
Quelle est la différence entre Pointeur et Référence ? Un pointeur est l’adresse mémoire d’un objet. Tandis qu’une référence est un alias pour un objet. Les références sont souvent implémentées à l’aide de pointeurs. Donc les deux sont utilisés pour qu’une variable donne accès à une autre. Pourtant, on ne recommande pas de considérer les références comme des « pointeurs sûrs ». Le caractère * désigne un pointeur et le caractère & désigne une référence.
Table de comparaison
Pointeur | Référence | |
---|---|---|
Définition | Le pointeur est l’adresse mémoire d’une variable. | La référence est un alias pour une variable. |
Opérateurs | *, -> | & |
Retour | Un pointeur renvoie la valeur située à l’adresse stockée dans une variable de pointeur qui est précédée du signe « * ». | Une référence renvoie l’adresse de la variable précédée du signe de référence « & ». |
Initialisation | On peut créer un pointeur sans initialisation. | On peut pas créer une référence sans initialisation. |
Nulle | Un pointeur peut faire référence à NULL. | Une référence ne peut jamais faire référence à NULL. |
Le moment d’initialisation | Un pointeur peut être initialisée à tout moment dans le programme. | Une référence ne peut être initialisée qu’au moment de sa création. |
Définition de « Pointeurs »
Un pointeur est une variable qui contient l’adresse mémoire d’une autre variable. Un pointeur doit être dé-référencé avec l’opérateur * pour accéder à l’emplacement de mémoire vers lequel il pointe.
int i = 5; //Ptr stocke l'adresse de i int *ptr = &i;
Un pointeur peut être réaffecté. Cette propriété est utile pour l’implémentation de structures de données telles que des listes chaînées, des arbres, etc. Exemple:
int a = 10; int b = 20; int *p; p = &a; p = &b;
Définition de « Références »
Une référence est un alias, c’est-à-dire un autre nom pour une variable existante. Une référence, comme un pointeur, est également implémentée en stockant l’adresse d’un objet.
Une référence peut être considérée comme un pointeur constant (à ne pas confondre avec un pointeur sur une valeur constante!) Avec une indirection automatique, c’est-à-dire que le compilateur appliquera l’opérateur * pour vous.
int i = 5; //Une référence (ou un alias) pour i. int &ref = i;
Une référence ne peut pas être réaffectée et doit être affectée à l’initialisation.
int a = 10; int b = 20; int &ref = a;
Conclusion
Le pointeur et la référence sont utilisés pour pointer ou renvoyer une autre variable. Mais les deux diffèrent dans leur utilisation et leur implémentation.