Classe di archiviazione C.

In questo tutorial imparerai a conoscere l'ambito e la durata delle variabili locali e globali. Inoltre, imparerai a conoscere le variabili statiche e di registro.

Ogni variabile nella programmazione C ha due proprietà: tipo e classe di archiviazione.

Il tipo si riferisce al tipo di dati di una variabile. Inoltre, la classe di archiviazione determina l'ambito, la visibilità e la durata di una variabile.

Esistono 4 tipi di classe di archiviazione:

  1. automatico
  2. esterno
  3. statico
  4. Registrati

Variabile locale

Le variabili dichiarate all'interno di un blocco sono variabili automatiche o locali. Le variabili locali esistono solo all'interno del blocco in cui sono dichiarate.

Facciamo un esempio.

 #include 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; )

Quando si esegue il programma precedente, verrà visualizzato un errore identificativo non dichiarato i. È perché i è dichiarato all'interno del forblocco loop. Al di fuori del blocco, non è dichiarato.

Facciamo un altro esempio.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

Nell'esempio precedente, n1 è locale a main()e n2 è locale a func().

Ciò significa che non puoi accedere alla variabile n1 all'interno func()poiché esiste solo all'interno main(). Allo stesso modo, non puoi accedere alla variabile n2 all'interno main()poiché esiste solo all'interno func().

Variabile globale

Le variabili dichiarate al di fuori di tutte le funzioni sono note come variabili esterne o globali. Sono accessibili da qualsiasi funzione all'interno del programma.

Esempio 1: variabile globale

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Produzione

 n = 7

Supponiamo che una variabile globale sia dichiarata in file1. Se provi a usare quella variabile in un file diverso file2, il compilatore si lamenterà. Per risolvere questo problema, la parola chiave externviene utilizzata file2per indicare che la variabile esterna è dichiarata in un altro file.

Variabile di registro

La registerparola chiave viene utilizzata per dichiarare le variabili di registro. Le variabili di registro avrebbero dovuto essere più veloci delle variabili locali.

Tuttavia, i compilatori moderni sono molto bravi nell'ottimizzazione del codice e c'è una rara possibilità che l'uso delle variabili di registro renda il programma più veloce.

A meno che tu non stia lavorando su sistemi embedded in cui sai come ottimizzare il codice per la data applicazione, non è possibile utilizzare le variabili di registro.

Variabile statica

Una variabile statica viene dichiarata utilizzando la staticparola chiave. Per esempio;

 static int i;

Il valore di una variabile statica persiste fino alla fine del programma.

Esempio 2: variabile statica

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Produzione

 6 11

Durante la prima chiamata di funzione, il valore di c viene inizializzato a 1. Il suo valore viene aumentato di 5. Ora, il valore di c è 6, che viene stampato sullo schermo.

Durante la seconda chiamata di funzione, c non viene nuovamente inizializzato su 1. È perché c è una variabile statica. Il valore c viene aumentato di 5. Ora, il suo valore sarà 11, che viene stampato sullo schermo.

Articoli interessanti...