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:
- automático
- externo
- estático
- 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
- Variables de C# y tipos de datos (primitivos)
- Ámbito variable de C#
- Palabra clave estática de C#
- Plantillas de clase de C++
- C Variables, constantes y literales
- Variables y tipos de C++:int, double, char, string, bool
- Java - Tipos de variables
- C - Variables
- C - Clases de almacenamiento
- C - Reglas de alcance
- C - Punteros