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

Clases de almacenamiento en C:auto, extern, static, clase de registro en C

¿Qué es la clase de almacenamiento en C?

Una clase de almacenamiento representa la visibilidad y la ubicación de una variable. Indica desde qué parte del código podemos acceder a una variable. Una clase de almacenamiento en C se usa para describir lo siguiente:

Por lo tanto, se utiliza una clase de almacenamiento para representar la información sobre una variable.

NOTA:Una variable no solo está asociada con un tipo de dato, su valor, sino también con una clase de almacenamiento.

Hay un total de cuatro tipos de clases de almacenamiento estándar. La siguiente tabla representa las clases de almacenamiento en C.

Clase de almacenamiento Propósito automático Es una clase de almacenamiento predeterminada.extern Es una variable global.static Es una variable local que es capaz de devolver un valor incluso cuando el control se transfiere a la llamada de función.registrar Es una variable que se almacena dentro de un Registro.

En este tutorial de C, aprenderá diferentes tipos de clases de almacenamiento en C con ejemplos-

Clase de almacenamiento automático en C

Las variables definidas mediante la clase de almacenamiento automático se denominan variables locales. Auto significa clase de almacenamiento automático. Una variable está en la clase de almacenamiento automático de forma predeterminada si no se especifica explícitamente.

El alcance de una variable automática está limitado solo con el bloque en particular. Una vez que el control sale del bloque, el acceso se destruye. Esto significa que solo el bloque en el que se declara la variable automática puede acceder a ella.

La palabra clave auto se usa para definir una clase de almacenamiento automático. De forma predeterminada, una variable automática contiene un valor basura.

Example, auto int age;

El siguiente programa define una función con dos variables locales

int add(void) {
   int a=13;
   auto int b=48;
return a+b;}

Tomamos otro programa que muestra el nivel de alcance "nivel de visibilidad" para variables automáticas en cada código de bloque que son independientes entre sí:

#include <stdio.h>
int main( )
{
  auto int j = 1;
  {
    auto int j= 2;
    {
      auto int j = 3;
      printf ( " %d ", j);
    }
    printf ( "\t %d ",j);
  }
  printf( "%d\n", j);}

SALIDA:

 3 2 1

Clase de almacenamiento externo en C

Extern significa clase de almacenamiento externo. La clase de almacenamiento externo se usa cuando tenemos funciones o variables globales que se comparten entre dos o más archivos.

Palabra clave externa se utiliza para declarar una variable o función global en otro archivo para proporcionar la referencia de una variable o función que ya se ha definido en el archivo original.

Las variables definidas mediante una palabra clave externa se denominan variables globales. Estas variables son accesibles a través del programa. Tenga en cuenta que la variable externa no se puede inicializar, ya se definió en el archivo original.

Example, extern void display();

Primer archivo:main.c

#include <stdio.h>
extern i;
main() {
   printf("value of the external integer is = %d\n", i);
   return 0;}

Segundo archivo:original.c

#include <stdio.h>
i=48;

Resultado:

 value of the external integer is = 48


Para compilar y ejecutar el código anterior, siga los pasos a continuación

Paso 1) Crear nuevo proyecto,

  1. Seleccione la aplicación de consola
  2. Haga clic en Ir

Paso 2) Seleccione C y haga clic en Siguiente

Paso 3) Haga clic en Siguiente

Paso 4) Ingrese los detalles y haga clic en Siguiente

Paso 5) Haga clic en Finalizar

Paso 6) Coloque el código principal como se muestra en el programa anterior en el archivo main.c y guárdelo

Paso 7) Cree un nuevo archivo C [Archivo -> nuevo -> Archivo vacío, guárdelo (como original.c) y agréguelo al proyecto actual haciendo clic en "Aceptar" en el cuadro de diálogo.

Paso 8) Coloque y guarde el código C del archivo original.c que se muestra en el ejemplo anterior sin la función main().

Paso 9) Cree y ejecute su proyecto. El resultado se muestra en la siguiente figura

Clase de almacenamiento estático en C

Las variables estáticas se utilizan dentro de la función/archivo como variables estáticas locales. También se pueden usar como una variable global

Example: static int count = 10;

Tenga en cuenta que la variable estática tiene un valor inicial predeterminado cero y se inicializa solo una vez en su vida útil.

#include <stdio.h> /* function declaration */
void next(void);
static int counter = 7; /* global variable */
main() {
 while(counter<10) {
      next();
      counter++;   }
return 0;}
void next( void ) {    /* function definition */
   static int iteration = 13; /* local static variable */
   iteration ++;
   printf("iteration=%d and counter= %d\n", iteration, counter);}

Resultado:

iteration=14 and counter= 7
iteration=15 and counter= 8
iteration=16 and counter= 9

Las variables globales son accesibles en todo el archivo, mientras que las variables estáticas solo son accesibles para la parte particular de un código.

La vida útil de una variable estática está en todo el código del programa. Una variable que se declara o inicializa usando la palabra clave estática siempre contiene cero como valor predeterminado.

Registrar clase de almacenamiento en C

Puede usar la clase de almacenamiento de registro cuando desee almacenar variables locales dentro de funciones o bloques en registros de CPU en lugar de RAM para tener acceso rápido a estas variables. Por ejemplo, los "contadores" son buenos candidatos para almacenarse en el registro.

Example: register int age;

La palabra clave registrar se utiliza para declarar una clase de almacenamiento de registro. Las variables declaradas usando la clase de almacenamiento de registros tienen una vida útil a lo largo del programa.

Es similar a la clase de almacenamiento automático. La variable está limitada al bloque en particular. La única diferencia es que las variables declaradas usando la clase de almacenamiento de registros se almacenan dentro de los registros de la CPU en lugar de una memoria. El registro tiene un acceso más rápido que el de la memoria principal.

Las variables declaradas usando la clase de almacenamiento de registros no tienen valor predeterminado. Estas variables a menudo se declaran al comienzo de un programa.

#include <stdio.h> /* function declaration */
main() {
{register int  weight;
int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}
}

SALIDA:

error: address of register variable 'weight' requested

La siguiente tabla resume las características principales de cada clase de almacenamiento que se usan comúnmente en la programación C

Clase de almacenamiento Declaración Almacenamiento Valor inicial predeterminado Alcance Vida útil automático Dentro de una función/bloqueMemoriaImpredecibleDentro de la función/bloqueDentro de la función/bloqueregistro Dentro de una función/bloqueCPU RegistrosBasuraDentro de la función/bloqueDentro de la función/bloqueexterno Fuera de todas las funcionesMemoryZeroEntire el archivo y otros archivos donde la variable se declara como externprogram runtimeStatic (local) Dentro de una función/bloqueMemoryZeroDentro del tiempo de ejecución de función/programa de bloqueEstático (global) Fuera de todas las funcionesMemoryZeroGlobalprogram runtime

Resumen

En este tutorial hemos discutido las clases de almacenamiento en C, para resumir:


Lenguaje C

  1. Clase y objeto de C#
  2. Palabra clave estática de C#
  3. Clase anidada de C#
  4. Clases y objetos de C++
  5. Función amiga de C++ y Clases amigas
  6. Plantillas de clase de C++
  7. Clase de almacenamiento C
  8. C - Clases de almacenamiento
  9. Clases de almacenamiento en C++
  10. Interfaces en C++ (Clases Abstractas)
  11. C# - Estructura del programa