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;