Avatar ·

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 ! <<>>

Comment lire à propos