Especificadores de almacenamiento de los tipos de datos
Una vez explicada la declaración de variables y su alcance, vamos a proceder a
explicar como es posible modificar el alcance del almacenamiento de los datos. Ello es
posible realizarlo mediante los especificadores de almacenamiento. Existen cuatro
especificadores de almacenamiento. Estos especificadores de almacenamiento, cuando
se usan, deben preceder a la declaración del tipo de dato de la variable. Estos
especificadores de almacenamiento son:
El especificador auto se usa para declarar que una variable local existe
solamente mientras estemos dentro de la subrutina o bloque de programa donde se
declara, pero, dado que por defecto toda variable local es auto, no suele usarse.
El especificador extern se usa en el desarrollo de programas compuestos por
varios módulos. El modificador extern se usa sobre las variables globales del módulo,
de forma que si una variable global se declara como extern, el compilador no crea un
almacenamiento para ella en memoria, sino que, tan solo tiene en cuenta que dicha
variable ya ha sido declarada en otro modulo del programa y es del tipo de dato que se
indica.
El especificador static actúa según el alcance de la variable:
- Para variables locales, el especificador static indica que dicha variable local debe almacenarse de forma permanente en memoria, tal y como si fuera una variable global, pero su alcance será el que correspondería a una variable local declarada en la subrutina o bloque. El principal efecto que provoca la declaración como static de una variable local es el hecho de que la variable conserva su valor entre llamadas a la función.
- Para variables globales, el especificador static indica que dicha variable global es local al módulo del programa donde se declara, y, por tanto, no será conocida por ningún otro módulo del programa.
El especificador register se aplica solo a variables locales de tipo char e int.
Dicho especificador indica al compilador que, caso de ser posible, mantenga esa
variable en un registro de la CPU y no cree por ello una variable en la memoria. Se
pueden declarar como register cuantas variables se deseen, pues el compilador ignorara
dicha declaración caso de no poder ser satisfecha. El uso de variables con
especificador de almacenamiento register permite colocar en registros de la CPU
variables muy frecuentemente usadas, tales como contadores de bucles, etc.
Algunos ejemplos de uso de los especificadores de almacenamiento son:
register unsigned int a;
static float b;
extern int c;
static const unsigned long int d;
0 comentarios