Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C - Clases de almacenamiento

Una clase de almacenamiento define el alcance (visibilidad) y el tiempo de vida de las variables y/o funciones dentro de un programa C. Preceden al tipo que modifican. Tenemos cuatro clases de almacenamiento diferentes en un programa C −

La clase de almacenamiento automático

El automático clase de almacenamiento es la clase de almacenamiento predeterminada para todas las variables locales.

{
   int mount;
   auto int month;
}

El ejemplo anterior define dos variables en la misma clase de almacenamiento. 'auto' solo se puede usar dentro de funciones, es decir, variables locales.

La clase de almacenamiento de registro

El registro La clase de almacenamiento se usa para definir variables locales que deben almacenarse en un registro en lugar de RAM. Esto significa que la variable tiene un tamaño máximo igual al tamaño del registro (generalmente una palabra) y no se le puede aplicar el operador unario '&' (ya que no tiene una ubicación de memoria).

{
   register int  miles;
}

El registro solo debe usarse para variables que requieren un acceso rápido, como contadores. También se debe tener en cuenta que definir 'registro' no significa que la variable se almacenará en un registro. Significa que PUEDE almacenarse en un registro dependiendo del hardware y las restricciones de implementación.

La clase de almacenamiento estático

La estática La clase de almacenamiento indica al compilador que mantenga una variable local en existencia durante la vida útil del programa en lugar de crearla y destruirla cada vez que entra y sale del alcance. Por lo tanto, hacer que las variables locales sean estáticas les permite mantener sus valores entre llamadas a funciones.

El modificador estático también se puede aplicar a variables globales. Cuando se hace esto, hace que el alcance de esa variable se restrinja al archivo en el que se declara.

En programación C, cuando estático se usa en una variable global, hace que solo una copia de ese miembro sea compartida por todos los objetos de su clase.

Demostración en vivo
#include <stdio.h>
 
/* function declaration */
void func(void);
 
static int count = 5; /* global variable */
 
main() {

   while(count--) {
      func();
   }
	
   return 0;
}

/* function definition */
void func( void ) {

   static int i = 5; /* local static variable */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

La clase de almacenamiento externo

El externo La clase de almacenamiento se usa para dar una referencia de una variable global que es visible para TODOS los archivos del programa. Cuando usa 'extern', la variable no se puede inicializar; sin embargo, apunta el nombre de la variable a una ubicación de almacenamiento que se ha definido previamente.

Cuando tiene varios archivos y define una variable o función global, que también se usará en otros archivos, entonces extern se utilizará en otro archivo para proporcionar la referencia de la variable o función definida. Solo para entender, externo se utiliza para declarar una variable o función global en otro archivo.

El modificador externo se usa más comúnmente cuando hay dos o más archivos que comparten las mismas funciones o variables globales, como se explica a continuación.

Primer archivo:main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

Segundo archivo:support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void) {
   printf("count is %d\n", count);
}

Aquí, externo se está utilizando para declarar count en el segundo archivo, donde como tiene su definición en el primer archivo, main.c. Ahora, compile estos dos archivos de la siguiente manera −

$gcc main.c support.c

Producirá el programa ejecutable a.out . Cuando se ejecuta este programa, produce el siguiente resultado −

count is 5

Lenguaje C

  1. Clases y objetos de C++
  2. Función amiga de C++ y Clases amigas
  3. Clase de almacenamiento C
  4. Estructuras y clases en C ++
  5. Python String count () con EJEMPLOS
  6. Python List count () con EJEMPLOS
  7. Java - Objeto y Clases
  8. Clases de almacenamiento en C++
  9. Interfaces en C++ (Clases Abstractas)
  10. C# - Clases
  11. Por qué es importante el número de flautas