1. Automático (automático):
* Alcance: Local al bloque en el que se declara.
* Lifetime: Existe solo durante la ejecución del bloque donde se declara.
* Enlace: No hay enlace (no es accesible desde fuera de la función).
* Ejemplo:
`` `C
int main () {
int x =10; // 'x' es una variable automática
// ...
}
`` `` ``
2. Externo (extern):
* Alcance: Alcance global.
* Lifetime: Existe a lo largo de la ejecución de todo el programa.
* Enlace: Enlace externo (accesible desde otros archivos).
* Ejemplo:
`` `C
// en file1.c
externo int y; // declara 'y' como externo
// en file2.c
int y =20; // Define 'Y'
`` `` ``
3. Estática:
* Alcance: Local al bloque donde se declara.
* Lifetime: Existe para la ejecución de todo el programa.
* Enlace: Enlace interno (solo accesible dentro del archivo actual).
* Ejemplo:
`` `C
vacío myFunc () {
static int count =0; // 'contar' conserva su valor entre las llamadas de función
contar ++;
printf ("recuento:%d \ n", recuento);
}
`` `` ``
4. Regístrese:
* Alcance: Local al bloque donde se declara.
* Lifetime: Existe solo durante la ejecución del bloque donde se declara.
* Enlace: No hay enlace (no es accesible desde fuera de la función).
* Ejemplo:
`` `C
vacío myFunc () {
registrar int i; // Solicitud para que el compilador almacene 'i' en un registro
para (i =0; i <10; i ++) {
// ...
}
}
`` `` ``
Puntos clave:
* Alcance: Determina en qué parte del programa se puede acceder a una variable o función.
* Lifetime: Controla cuánto tiempo existe la variable en la memoria.
* Enlace: Dicta si se puede acceder a una variable o función desde otros archivos de origen.
¿Por qué son importantes las clases de almacenamiento?
Comprender las clases de almacenamiento es crucial para una programación C efectiva:
* Gestión de memoria: Te ayudan a controlar cómo se asigna y desasigna memoria.
* Organización de código: Facilitan la modularidad y la reutilización del código.
* Optimización de rendimiento: Puede usar 'Registro' para mejorar potencialmente el rendimiento almacenando variables en registros.
Información adicional:
* Las clases de almacenamiento se definen utilizando palabras clave en la declaración de la variable o función.
* La palabra clave `auto` a menudo se omite porque es la clase de almacenamiento predeterminada para variables locales.
* La palabra clave `Registro` es una pista para el compilador, y no siempre se honra.
Avíseme si desea explorar una clase de almacenamiento específica con más detalle o tener más preguntas.