Avatar ·

Diferença entre const int*, int * const e const int * const em C++

Olá a todos! Acabei de começar a aprender C++ e não consigo entender a palavra-chave `const` no contexto de ponteiros. Olho para três declarações diferentes e fico completamente confuso: 1. `const int* ptr;` 2. `int* const ptr;` 3. `const int* const ptr;` Por que elas significam coisas diferentes? Qual delas permite alterar o valor para o qual o ponteiro aponta, e qual permite alterar o próprio ponteiro? Escrevi um pequeno exemplo: ```cpp int a = 10; int b = 20; const int* p1 = &a; // *p1 = 30; // erro, se descomentar p1 = &b; // funciona int* const p2 = &a; *p2 = 30; // funciona // p2 = &b; // erro, se descomentar const int* const p3 = &a; // *p3 = 30; // erro // p3 = &b; // erro ``` Estou entendendo corretamente que `const` à esquerda do asterisco protege os dados, e à direita protege o próprio ponteiro? Ou existe uma regra mais simples para memorizar? Expliquem, por favor, como isso funciona e em quais casos usar cada variante. Desde já, obrigado! <<>>

Como ler o