Saltar al contenido

automático, externo, clase estática, programa registrado en C.

¿Qué es la clase de almacenamiento en C?

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

  • El alcance variable.
  • Dónde se almacenará la variable.
  • Valor inicial de variables.
  • Ciclo de vida variable.
  • ¿Quién puede acceder a las variables?

Entonces, una clase de almacenamiento se usa para representar la información sobre una variable.

NOTA: Las variables no solo están relacionadas con el tipo de datos, su valor sino también con la clase de almacenamiento.

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

Clase de almacenamientoPropósito
automáticoEs una clase de almacenamiento predeterminada.
fuera deEs una variable global.
estáticoEs una variable local que puede devolver un valor incluso cuando el control se transfiere a la llamada de función.
programaEs una variable que se almacena dentro de un Registro.

A este respecto Tutorial de C, aprenderá diferentes tipos de clases de almacenamiento en C con ejemplos-

Clase de almacenamiento automático en C.

Las variables definidas por una clase de almacenamiento automático se denominan variables locales. Auto significa clase de almacenamiento automático. Una clase de almacenamiento automático contiene una variable de forma predeterminada a menos que se especifique explícitamente.

El alcance de una variable automática se limita a un bloque en particular. Cuando el control sale del bloque, se elimina el acceso. Esto significa que solo se puede acceder a él desde el bloque en el que se declara la variable automática.

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

Example, auto int age;

La siguiente tabla define una función que consta de 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 las 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( "%dn", j);}

RESULTADO:

 3 2 1 

Clase de almacenamiento externo en C.

El exterior representa la clase de almacenamiento externo. Una clase de almacenamiento externo se usa cuando tenemos funciones o variables globales que se comparten entre dos o más archivos.

Palabra clave fuera de se utiliza para declarar una variable o función global en otro archivo para proporcionar una referencia de una variable o función definida en el archivo original.

Las variables definidas por una palabra clave externa se denominan variables globales. Estas variables son accesibles en todo el programa. Tenga en cuenta que la variable externa no se puede iniciar ya definida 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 = %dn", 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) Crea un nuevo proyecto,

  1. Seleccionar 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 maestro como se muestra en el programa anterior en el archivo main.cy guárdelo

Paso 7) Cree un nuevo archivo C[Archivo->nuevo->ArchivovacíoGuarde(comooriginal)yañadaalproyectoactualhaciendoclicen»Aceptar»enelcuadrodediálogo[File->nua->FolamhComhadsábháil(marabhíbunaidhc)aguscuirleisantionscadalreathaétrí“OK”achliceáilsabhoscadialóige[File->new->EmptyFilesave(asoriginalc)andaddittothecurrentprojectbyclicking»OK»inthedialoguebox

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

Paso 9) Construye y ejecuta tu proyecto. El resultado se muestra en la siguiente figura.

Clase de almacenamiento estático en C.

Las variables estáticas dentro de la función / archivo se utilizan como variables estáticas locales. También se pueden utilizar como variables globales

  • Una variable local estática es una variable local que mantiene y almacena su valor entre llamadas a función o bloque y solo es visible para la función o bloque en el que está definida.
  • Las variables estáticas globales son variables globales solo con el archivo en el que se declara.
Example: static int count = 10;

Tenga en cuenta que una variable estática tiene un valor predeterminado de cero y solo se inicia una vez en su vida.


#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= %dn", 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, pero las variables estáticas solo tienen acceso a una determinada parte del código.

Todo el código del programa contiene un ciclo de vida variable estático. Las variables que se declaran o inician mediante una palabra clave estática siempre son cero.

Registre una clase de almacenamiento en C.

Puede utilizar la clase de almacenamiento de programas cuando desee almacenar variables locales dentro de sus funciones o bloques en programas de CPU en lugar de RAM para acceder rápidamente a estas variables. Por ejemplo, los «contadores» son buenos candidatos para almacenarlos en el registro.

Example: register int age;

La palabra clave programa utilizado para declarar la clase de almacenamiento del programa. La vida útil de las variables declaradas mediante una clase de almacenamiento de programa es para todo el programa.

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

Las variables declaradas no tienen un valor predeterminado cuando se usa la clase de almacenamiento del programa. Estas variables a menudo se confirman 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*/}
}

RESULTADO:


error: address of register variable 'weight' requested

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

Clase de almacenamientoDeclaraciónAlmacenamientoValor inicial predeterminadoAlcanceTodo el rato
automáticoFunción / bloque interiorMemoriaImpredecibleDentro de la función / bloqueDentro de la función / bloque
programaFunción / bloque interiorProgramación de CPUDesperdicioDentro de la función / bloqueDentro de la función / bloque
fuera deFuera de todas las funcionesMemoriaCeroIngrese el archivo y otros archivos donde la variable se declara externatiempo de ejecución del programa
Estático (local)Función / bloque interiorMemoriaCeroDentro de la función / bloquetiempo de ejecución del programa
Estático (global)Fuera de todas las funcionesMemoriaCeromundotiempo de ejecución del programa

Resumen

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