Tipos de almacenamiento para variables en C

(Este artículo forma parte del Curso de Programación en C)

En C existen ciertos modificadores de variables que se usan durante la definición de las mismas y que afectan al modo en que se almacenan las variables, así como a su ámbito, es decir, a la zona del programa desde donde las variables son accesibles. Estos son algunos de ellos.

auto

El modificador auto se usa para definir el ámbito temporal de una variable local. Es el modificador por defecto para las variables locales, y se usa muy raramente.

Por ejemplo:

void funcion1(void) {
   auto int n;     // La variable n será local a esta función
   ...
}

register

Indica al compilador que debe intentar que la variable se almacene en un registro de la CPU, cuando sea posible, con el fin de optimizar su tiempo de acceso.

Los datos declarados con el modificador register tienen siempre un ámbito global.
El compilador puede ignorar la petición de almacenamiento en registro, que sólo debe ser usado cuando una variable vaya a ser usada con mucha frecuencia y el rendimiento del programa sea un factor crucial.

Por ejemplo:

register int n;    // La variable n se almacenará en un registro de la CPU (o no)

static

Este modificador se usa con el fin de que las variables locales de una función conserven su valor entre distintas llamadas a la misma.

Por ejemplo:

void funcion1(void) {
   static int n;  // La variable n no perderá su valor entre dos llamadas a la función
   ...
}

extern

Este modificador se usa para indicar que el almacenamiento y valor de una variable o la definición de una función están definidos en otro fichero fuente. Las funciones declaradas con extern son visibles por todos los ficheros fuente del programa, salvo que se redefina la función como static.

Por ejemplo:

extern int n;    // La variable n está declarada en otro fichero, pero la vamos
                 // a usar también en éste

const

Cuando se aplica a una variable, indica que su valor no puede ser modificado. Cualquier intento de hacerlo durante el programa generará un error. Por eso es imprescindible inicializar las variables constantes cuando se declaran.

En C++ es preferible usar este tipo de constantes en lugar de constantes simbólicas (macros definidas con #define). El motivo es que estas constantes tienen un tipo declarado, y el compilador puede encontrar errores por el uso inapropiado de constantes que no podría encontrar si se usan constantes simbólicas. En C es indiferente.

Por ejemplo:

const int n = 3;    // Esta variable es, en realidad, una constante

Categorías

Licencia

ClustrMaps

Saul Gonzalez

y Como haces para leer archivos, y despues si kieres modificar una de sus lineas?