Clases de almacenamiento de C

La “clase de almacenamiento” de una variable determina si el elemento es “una duración global” o “local”.C llama a estas dos duraciones “static” y “automático”. Un elemento con una duración global existe y tiene un valor en la ejecución del programa.Todas las funciones tienen una duración globales.

Variables automáticas, o variables con duraciones locales, son nuevo almacenamiento asignado cada vez que el control de ejecución pasa al bloque donde se definen.Cuando la ejecución vuelve, las variables ya no tienen valores significativos.

C proporciona los especificadores siguientes de la clase de almacenamiento:

Sintaxis

  • almacenamiento-clase-especificador:
    Auto

    Registrarse

    static

    extern

    definición de tipos

    __declspec /* ( extender-desclasificación-modificador-seq ) Microsoft Específico *

A excepción de __declspec, sólo se puede utilizar un almacenamiento-clase-especificador en el declaración-especificador en una declaración.Si no se crea ninguna especificación de clase de almacenamiento, las declaraciones dentro de un bloque crean objetos automáticos.

Los elementos declarados con el especificador de Auto o de Registrarse tienen una duración locales.Los elementos declarados con el especificador de Estática o de extern tienen una duración globales.

Desde typedef y __declspec son semánticamente diferentes de los demás elementos de cuatro almacenamiento-clase-especificadores , se tratan por separado.Para obtener información específica sobre typedef, vea declaraciones de Typedef.Para obtener información específica sobre __declspec, vea Atributos extendidos de clase de almacenamiento.

La posición de la variable y de declaraciones de función dentro de los archivos de código fuente también afecta a la clase de almacenamiento y la visibilidad.Las declaraciones fuera de todas las definiciones de función se dice que aparezca en el “nivel externo.” Las declaraciones dentro de definiciones de función aparecen en el “nivel interno”.

El significado exacto de cada especificador de clase de almacenamiento depende de dos factores:

  • Si la declaración aparece en el externo o nivel interno

  • Si el elemento que se va a declarar es una variable o una función

Especificadores de clase de almacenamiento para las declaraciones de Externo-Nivel y Especificadores de clase de almacenamiento para las declaraciones de Interno-Nivel describen los elementos de almacenamiento-clase-especificador en cada clase de declaración y explica el comportamiento predeterminado cuando se omite el almacenamiento-clase-especificador de una variable.Especificadores de clase de almacenamiento con declaraciones de función describe los especificadores de clase de almacenamiento utilizados con funciones.

Vea también

Conceptos

Declaraciones y tipos