Calificadores de tipo
Los calificadores de tipo proporcionan una de dos propiedades a un identificador.El calificador de tipo de const declara un objeto esté no modificable.El calificador de tipo de volatile declara un elemento cuyo valor se puede cambiar legítimo por algo más allá del control del programa en la que aparece, por ejemplo un subproceso en paralelo que se ejecuta.
Los dos calificadores de tipo, const y volatile, solo pueden aparecer una vez en una declaración.Los calificadores de tipo pueden aparecer con ningún especificador de tipo; sin embargo, no pueden aparecer después de la primera coma en una declaración múltiple de elemento.Por ejemplo, las siguientes declaraciones son válidos:
typedef volatile int VI;
const int ci;
Estas declaraciones no son válidos:
typedef int *i, volatile *vi;
float f, const cf;
Los calificadores de tipo son pertinentes al tener acceso a los identificadores como l en expresiones.Vea Las expresiones de valor l y r-value para obtener información sobre l y expresiones.
Sintaxis
- calificador de tipo:
constvolatile
Los siguientes son const válida y declaraciones de volatile :
int const *p_ci; /* Pointer to constant int */
int const (*p_ci); /* Pointer to constant int */
int *const cp_i; /* Constant pointer to int */
int (*const cp_i); /* Constant pointer to int */
int volatile vint; /* Volatile integer */
Si la especificación de un tipo de matriz incluye calificadores de tipo, se califica el elemento, no del tipo de matriz.Si la especificación de tipo de la función incluye calificadores, el comportamiento es indefinido.Ni volatile ni const afecta a las propiedades de intervalo de valores o de la aritmética del objeto.
Esta lista se describe cómo utilizar const y volatile.
La palabra clave de const se puede utilizar para modificar cualquier tipo fundamental o global, o un puntero a un objeto de cualquier tipo, o typedef.Si un elemento se declara con el calificador de tipo de const , toman a su tipo es const int.Una variable de const se puede inicializar o puede colocarse en un área de solo lectura de almacenamiento.La palabra clave de const es útil para declarar punteros a const puesto que ésta requiere la función no cambiar el puntero de cualquier forma.
El compilador supone que, en cualquier punto del programa, una variable de volatile se puede tener acceso mediante un proceso desconocido que utilice o modificar su valor.Por consiguiente, independientemente de las optimizaciones especificadas en la línea de comandos, el código de cada asignación a o referencia de una variable de volatile debe generar aunque parece no surtir ningún efecto.
Si volatile solo se utiliza, se supone int .El especificador de tipo de volatile se puede utilizar para proporcionar acceso confiable en ubicaciones de memoria especiales.Utilice volatile con objetos de datos que se puede tener acceso o modificar mediante controladores de la señal, simultáneamente ejecutando los programas, o por hardware especial como registros de control de E/S asignado a la memoria.Puede declarar una variable como volatile para su duración, o puede convertir una única referencia para ser volatile.
Un elemento puede ser const y volatile, en cuyo caso el elemento no se podría modificar legítimo por su programa, pero se puede modificar algún proceso asincrónico.