Différence entre const int*, int * const et const int * const en C++
Bonjour à tous ! Je viens de commencer à apprendre le C++ et je n'arrive pas à comprendre le mot-clé `const` dans le contexte des pointeurs. Je regarde trois déclarations différentes et je suis complètement confus :
1. `const int* ptr;`
2. `int* const ptr;`
3. `const int* const ptr;`
Pourquoi signifient-elles des choses différentes ? Laquelle permet de modifier la valeur pointée par le pointeur, et laquelle permet de modifier le pointeur lui-même ? J'ai écrit un petit exemple :
```cpp
int a = 10;
int b = 20;
const int* p1 = &a;
// *p1 = 30; // erreur si décommenté
p1 = &b; // fonctionne
int* const p2 = &a;
*p2 = 30; // fonctionne
// p2 = &b; // erreur si décommenté
const int* const p3 = &a;
// *p3 = 30; // erreur
// p3 = &b; // erreur
```
Est-ce que je comprends bien que `const` à gauche de l'astérisque protège les données, et à droite protège le pointeur lui-même ? Ou existe-t-il une règle plus simple à retenir ? Expliquez-moi, s'il vous plaît, comment cela fonctionne et dans quels cas utiliser quelle variante. Merci d'avance !
<<>>