Sobes.tech
Junior

Parlez des différences entre une référence et un pointeur en langage C/C++.

sobes.tech IA

Réponse de l'IA

Une référence peut être considérée comme un alias pour un objet existant ; un pointeur contient l'adresse mémoire de l'objet.

Caractéristique Référence Pointeur
Initialisation Doit être initialisée lors de la déclaration. Peut ne pas être initialisé.
Réaffectation Ne peut pas être réaffectée après l'initialisation. Peut pointer vers un autre objet.
Valeur nulle Ne peut pas être null. Peut être nullptr (C++11) ou NULL (C/C++).
Indexation de tableau Ne supporte pas directement l'arithmétique des pointeurs. Supporte l'arithmétique des pointeurs.
Opérateurs Utilisé directement (. pour les membres). Utilise * pour la déférenciation, -> pour les membres.
Taille N'a pas sa propre taille, référence à la taille de l'objet. A une taille correspondant à la taille de l'adresse dans le système (habituellement 4 ou 8 octets).
Allocation mémoire Ne nécessite pas d'allocation/libération explicite de mémoire. Peut nécessiter new/delete (en C++).
Utilisation Souvent comme paramètres de fonctions pour passer par référence. Pour l'allocation dynamique de mémoire, accès de bas niveau.
// Exemple d'utilisation de référence
int x = 10;
int& ref = x; // ref est un alias pour x
ref = 20;     // x devient 20

// Exemple d'utilisation de pointeur
int y = 30;
int* ptr = &y; // ptr pointe vers l'adresse de y
*ptr = 40;    // y devient 40

// Un pointeur peut être nullptr
int* null_ptr = nullptr;