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

Clase de almacenamiento C

Clase de almacenamiento C

En este tutorial, aprenderá sobre el alcance y la duración de las variables locales y globales. Además, aprenderá sobre variables estáticas y de registro.

Cada variable en 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 duración de una variable.

Hay 4 tipos de clase de almacenamiento:

  1. automático
  2. externo
  3. estático
  4. regístrate

Variables locales

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.

Tomemos un ejemplo.

#include <stdio.h>

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 error identificador no declarado i . Es porque yo se declara dentro del for bloque 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 para main() y n2 es local para func() .

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


Variables globales

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 <stdio.h>
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 usar esa variable en un archivo diferente file2 , el compilador se quejará. Para resolver este problema, la palabra clave extern se usa en file2 para indicar que la variable externa está declarada en otro archivo.


Registrar variable

El register La palabra 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 usando el static palabra 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 <stdio.h>
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 está impreso en la pantalla.

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


Lenguaje C

  1. Variables de C# y tipos de datos (primitivos)
  2. Ámbito variable de C#
  3. Palabra clave estática de C#
  4. Plantillas de clase de C++
  5. C Variables, constantes y literales
  6. Variables y tipos de C++:int, double, char, string, bool
  7. Java - Tipos de variables
  8. C - Variables
  9. C - Clases de almacenamiento
  10. C - Reglas de alcance
  11. C - Punteros