Classi di archiviazione C

La "classe di archiviazione" della variabile determina se l'elemento dispone di una durata "globale" o "locale". C chiama queste due durate "statica" e "automatica". Un elemento con una durata globale esiste già e mantiene lo stesso valore nel corso dell'esecuzione del programma. Tutte le funzioni hanno durate globali.

Alle variabili automatiche o alle variabili con durate locali viene allocato un nuovo spazio di archiviazione ogni volta in cui il controllo dell'esecuzione passa nel blocco nel quale vengono definite. Al termine dell'esecuzione, le variabili non hanno più valori significativi.

C fornisce i seguenti identificatori della classe di archiviazione:

Sintassi

storage-class-specifier:
auto

register

static

extern

typedef

__declspec (extended-decl-modifier-seq) /* Specifico di Microsoft */

Ad eccezione di __declspec, in una dichiarazione è possibile usare un solo storage-class-specifier in declaration-specifier. Se non viene creata alcuna specifica della classe di archiviazione, le dichiarazioni all'interno di un blocco creano oggetti automatici.

Gli elementi dichiarati con l'identificatore auto o register hanno durate locali. Gli elementi dichiarati con l'identificatore static o extern hanno durate globali.

Poiché typedef e __declspec sono semanticamente diversi dagli altri quattro terminali storage-class-specifier, vengono descritti separatamente. Per informazioni specifiche su typedef, vedere Dichiarazioni typedef. Per informazioni specifiche su __declspec, vedere Attributi di classi di archiviazione estesi.

La posizione delle dichiarazioni di funzione e di variabile nei file di origine influisce anche sulla classe di archiviazione e sulla visibilità. Le dichiarazioni all'esterno di tutte le definizioni di funzione vengono visualizzate a livello "esterno". Le dichiarazioni all'interno delle definizioni di funzione vengono visualizzate a "livello interno".

Il significato esatto di ogni identificatore della classe di archiviazione dipende da due fattori:

Vedere anche

Dichiarazioni e tipi