Clase de almacenamiento C

En este tutorial, aprenderá sobre el alcance y la vida útil de las variables locales y globales. Además, aprenderá sobre variables estáticas y de registro.

Cada variable en la programación C tiene dos propiedades: tipo y clase de almacenamiento.

El tipo se refiere al tipo de datos de una variable. Y la clase de almacenamiento determina el alcance, la visibilidad y la vida útil de una variable.

Hay 4 tipos de clases de almacenamiento:

  1. automático
  2. externo
  3. estático
  4. Registrarse

Variable local

Las variables declaradas dentro de un bloque son variables automáticas o locales. Las variables locales existen solo dentro del bloque en el que se declara.

Pongamos un ejemplo.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Cuando ejecute el programa anterior, obtendrá un identificador no declarado de error i. Es porque i se declara dentro del forbloque de bucle. Fuera del bloque, no está declarado.

Tomemos otro ejemplo.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

En el ejemplo anterior, n1 es local main()ay n2 es local func().

Esto significa que no puede acceder a la variable n1 dentro, func()ya que solo existe dentro main(). Del mismo modo, no puede acceder a la variable n2 en el interior, main()ya que solo existe en el interior func().

Variable global

Las variables que se declaran fuera de todas las funciones se conocen como variables externas o globales. Son accesibles desde cualquier función dentro del programa.

Ejemplo 1: Variable global

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Salida

 n = 7

Supongamos que se declara una variable global en file1. Si intenta utilizar esa variable en un archivo diferente file2, el compilador se quejará. Para resolver este problema, externse usa la palabra clave in file2para indicar que la variable externa está declarada en otro archivo.

Registrar variable

La registerpalabra clave se utiliza para declarar variables de registro. Se suponía que las variables de registro eran más rápidas que las variables locales.

Sin embargo, los compiladores modernos son muy buenos en la optimización de código y existe una rara posibilidad de que el uso de variables de registro haga que su programa sea más rápido.

A menos que esté trabajando en sistemas integrados en los que sepa cómo optimizar el código para la aplicación dada, no se utilizan variables de registro.

Variable estática

Una variable estática se declara mediante la staticpalabra clave. Por ejemplo;

 static int i;

El valor de una variable estática persiste hasta el final del programa.

Ejemplo 2: Variable estática

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Salida

 6 11

Durante la primera llamada a la función, el valor de c se inicializa a 1. Su valor se incrementa en 5. Ahora, el valor de c es 6, que se imprime en la pantalla.

Durante la segunda llamada de función, c no se inicializa a 1 nuevamente. Es porque c es una variable estática. El valor c se incrementa en 5. Ahora, su valor será 11, que está impreso en la pantalla.

Articulos interesantes...