Avatar ·

Différence entre const int*, const int * const et int * const en C++

Bonjour ! Je viens de commencer à apprendre le C++ et j'essaie de comprendre les pointeurs et le qualificateur const. J'ai lu plusieurs articles, mais je me trompe toujours entre ces trois constructions : `const int*`, `int * const` et `const int * const`. Par exemple, j'ai écrit ce code : ```cpp int value = 5; const int* ptr1 = &value; int * const ptr2 = &value; const int * const ptr3 = &value; ``` Je comprends qu'elles sont toutes liées au fait que les données ou le pointeur lui-même ne peuvent pas être modifiés, mais je n'arrive pas à formuler clairement la différence. Quand j'essaie d'assigner une nouvelle valeur via `*ptr1 = 10;`, le compilateur se plaint. Et si j'essaie de modifier `ptr2`, par exemple `ptr2 = &otherValue;`, j'obtiens aussi une erreur. Mais je peux rediriger `ptr1` vers une autre variable, alors que `ptr2` non. Pourquoi ? Je voudrais aussi comprendre dans quels cas utiliser chaque variante. Peut-être existe-t-il une règle mnémotechnique pour s'en souvenir ? Je serais reconnaissant pour une explication détaillée avec des exemples. <<>>

Clé pour comprendre : lisez de droite à gauche