GeeksforGeeks
int const*
int const* es puntero a constante integer
Esto significa que la variable está declarada es un puntero que apunta a una constante entero. Efectivamente, esto implica que el puntero apunta a un valor que no debe cambiarse. El calificador Const no afecta al puntero en este escenario, por lo que el puntero puede apuntar a otra dirección.
La primera palabra clave const puede ir a ambos lados del tipo de datos, por lo que int const* es equivalente a const int*.
int *const
int *const es una constante puntero a entero
Esto significa que la variable está declarada es un puntero constante que apunta a un entero. Efectivamente, esto implica que el puntero no debe apuntar a otra dirección. El calificador Const no afecta el valor del entero en este escenario, por lo que el valor que se almacena en la dirección puede cambiar.
const int* const
const int* const es un puntero constante a constant integer
Esto significa que la variable está declarada es un puntero constante que apunta a una constante entero. Efectivamente, esto implica que un puntero constante apunta a un valor constante. Por lo tanto, ni el puntero debe apuntar a una nueva dirección ni el valor al que se apunta debe cambiarse.
La primera palabra clave const puede ir a ambos lados del tipo de datos, por lo que const int* const es equivalente a int const* const.
Mapa de memoria
Una forma de recordar la sintaxis (de acuerdo con Bjarne Stroustrup) es la regla espiral-
La regla dice, comience desde el nombre de la variable y muévase en el sentido de las agujas del reloj al siguiente puntero o tipo. Repita hasta que finalice la expresión.
La regla también se puede ver como decodificando la sintaxis de derecha a izquierda.
por lo tanto,
- int const* es puntero const int
- int *const es puntero const int
- const int* const es puntero const a const int
Usando esta regla, incluso el complejo de declaraciones puede ser decodificado como,
- int ** const es una constante de puntero a puntero a int.
- int * const * es un puntero a const puntero a un int.
- int const * * es un puntero a un puntero a un const int.
- int * const * const es una constante de puntero a un puntero const int.
¡Atención al lector! No dejes de aprender ahora. Obtenga todos los conceptos importantes de C++ Foundation y STL con los cursos C++ Foundation y STL a un precio asequible para los estudiantes y prepárese para la industria.