GeeksforGeeks
int const *
int const * est un pointeur sur un entier constant
Cela signifie que la variable déclarée est un pointeur, pointant vers un entier constant. Effectivement, cela implique que le pointeur pointe vers une valeur qui ne doit pas être modifiée. Le qualificatif Const n’affecte pas le pointeur dans ce scénario, il est donc autorisé à pointer vers une autre adresse.
Le premier mot-clé const peut aller de chaque côté du type de données, par conséquent int const * est équivalent à const int *.
int *const
int *const est un pointeur constant vers un entier
Cela signifie que la variable déclarée est un pointeur constant pointant vers un entier. Effectivement, cela implique que le pointeur ne doit pas pointer vers une autre adresse. Le qualificatif Const n’affecte pas la valeur de l’entier dans ce scénario, de sorte que la valeur stockée dans l’adresse est autorisée à changer.
const int * const
const int * const est un pointeur constant vers un entier constant
Cela signifie que la variable déclarée est un pointeur constant pointant vers un entier constant. Effectivement, cela implique qu’un pointeur constant pointe vers une valeur constante. Par conséquent, ni le pointeur ne doit pointer vers une nouvelle adresse ni la valeur pointée ne doit être modifiée.
Le premier mot-clé const peut aller de chaque côté du type de données, par conséquent const int * const est équivalent à int const * const.
Carte mémoire
Une façon de se souvenir de la syntaxe (selon Bjarne Stroustrup) est la règle en spirale –
La règle dit, commencez à partir du nom de la variable et déplacez-vous dans le sens horaire jusqu’au pointeur ou au type suivant. Répétez jusqu’à la fin de l’expression.
La règle peut également être considérée comme décodant la syntaxe de droite à gauche.
D’où,
- int const * est un pointeur sur const int
- int * const est un pointeur const sur int
- int const * const est un pointeur const sur const int
En utilisant cette règle, même les déclarations complexes peuvent être décodées comme,
- int ** const est un pointeur const pour pointer vers un int.
- int * const * est un pointeur vers un pointeur const vers un int.
- int const ** est un pointeur vers un pointeur vers un const int.
- int * const * const est un pointeur const vers un pointeur const vers un int.
Attention lecteur! N’arrête pas d’apprendre maintenant. Mettez la main sur tous les concepts importants de la Fondation C++ et de la STL avec les cours de la Fondation C++ et de la STL à un prix favorable aux étudiants et devenez prêt pour l’industrie.