Tengo problemas para encontrar un patrón intuitivo para la forma en que se usa const en declaraciones en los lenguajes C y C++. He aquí algunos ejemplos:Entender dónde va "const" en una declaración
const int a; //Const integer
int const a; //Const integer
const int * a; //Pointer to constant integer
int * const a; //Const pointer to an integer
int const * a const; //Const pointer to a const integer
En las líneas 1 y 2, parece const
puede venir antes o después de int
, que es lo que modifica.
- Entonces, ¿cómo, en la línea 4, el compilador qué deciden que está modificando
const
*
(puntero) en lugar deint
? - ¿Cuál es la regla que sigue el compilador para decidir a qué se aplica el
const
? - ¿Sigue la misma regla para
*
?
enlace obligatorio a la [regla en espiral a la derecha] (http://c-faq.com/decl/spiral.anderson.html) –
Si no hay matrices o funciones involucradas, simplemente ** leyendo de derecha a izquierda * * también puede ayudar: 'int const * const a':" 'a' es un puntero const a un const int". –
Mark, si lo hubiera enviado como respuesta, lo habría comprobado. ¡Muy útil y realmente me ayuda a resolverlo! –