Durata
“La durata„ è il periodo di tempo durante l'esecuzione di un programma in cui una variabile o una funzione esiste.La durata di archiviazione dell'identificatore determina la durata.
un identificatore dichiarato con archiviazione-classe-identificatore statico ha durata di archiviazione statica.Gli identificatori con durata di archiviazione statica (denominato anche “globale„) hanno l'archiviazione e un valore definito per la durata di un programma.L'archiviazione è riservata e il valore archiviato dell'identificatore viene inizializzato solo una volta, prima di avvio del programma.Un identificatore dichiarato con collegamento esterno o interno dispone anche di durata di archiviazione statica (vedere Collegamento).
un identificatore dichiarato senza statico l'identificatore di classe di archiviazione ha durata automatica di archiviazione se viene dichiarato in una funzione.Un identificatore con durata automatica di archiviazione (“un identificatore locale„) ha l'archiviazione e un valore definito solo all'interno del blocco in cui l'identificatore è definito o dichiarato.Un identificatore automatico è una nuova archiviazione allocata ogni volta che il programma immette il blocco e perde la relativa archiviazione (e il relativo valore) al termine del programma il blocco.Gli identificatori dichiarati in una funzione senza il collegamento anche hanno una durata automatica di archiviazione.
Le regole seguenti specificano se un identificatore della durata (automatica) globale (statici) o locale:
Tutte le funzioni hanno una durata statica.Pertanto sono sempre durante l'esecuzione del programma.Gli identificatori dichiarati a livello esterno (ovvero all'esterno di tutti i blocchi nel programma allo stesso livello di definizioni di funzione) hanno sempre la durata () statiche globali.
Se una variabile locale dispone di un inizializzatore, la variabile viene inizializzata ogni volta che viene creata (a meno che non sia dichiarata come statico).I parametri di funzione dispongono inoltre di durata locale.È possibile specificare la durata complessiva per un identificatore all'interno di un blocco importazione statico identificatore classe di archiviazione nella relativa dichiarazione.Dopo aver dichiarato statico, la variabile conserva il valore da una voce del blocco al seguente.
Sebbene un identificatore con una durata complessiva esista durante l'esecuzione del programma di origine (ad esempio, una variabile esternamente dichiarata o una variabile locale dichiarata con statico parola chiave), potrebbe non essere visibile in tutte le parti del programma.vedere ambito e visibilità per informazioni sulla visibilità e vedere classi di archiviazione per una discussione di archiviazione-classe-identificatore non terminal.
La memoria può essere allocata in base alle esigenze (dinamico) se creati tramite l'utilizzo delle routine di libreria speciali come malloc.Poiché l'allocazione dinamica della memoria utilizza le routine della libreria, non è considerato parte del linguaggio.vedere report funzione in Riferimenti alla libreria di runtime.