Classi di archiviazione in C

Classi di archiviazione in C
Le lezioni di archiviazione sono un argomento molto importante in C. Se abbiamo sviluppato il nostro concetto in C, in particolare sulla vita e la portata di qualsiasi variabile, dobbiamo conoscere le lezioni di archiviazione in C. In architettura basata su DOS o architettura a 16 bit come Turbo C ++ 3. 0, prende la memoria di 2 byte. Ma in un'architettura a 32 bit o 64 bit come Dev C ++, i blocchi di codice e gli interi prendono la memoria di 4 byte.

Tre proprietà delle variabili

  1. Nome della variabile.
  2. Dimensione del blocco di memoria.
  3. Tipo di contenuto.

Altre proprietà della variabile

Valore predefinito, portata, vita, archiviazione.

Valore di default: Se non inizializziamo alcun valore a una variabile al momento della Dichiarazione della variabile, allora qual è il valore della variabile x? Quindi il valore di x è chiamato valore predefinito, che è un'altra caratteristica della variabile.

Magazzinaggio: Archiviazione significa dove la memoria è allocata per una variabile, RAM o nel registro CPU.

Scopo: I limiti o le aree in cui possiamo accedere a una variabile

Vita: L'arco tra la creazione e la distruzione di una variabile si chiama vita. Queste 4 proprietà che possiamo realizzare al momento della dichiarazione di una variabile.

Esistono 4 tipi di classi di archiviazione nella dichiarazione di dichiarazione.

  1. Automatico
  2. Registrati
  3. Statico
  4. Esterno
Classe di archiviazione Parola chiave Valore di default Magazzinaggio Scopo Vita
1. Automatico auto Spazzatura RAM Limitato ai blocchi in cui è dichiarato Fino all'esecuzione del blocco in cui viene dichiarato
2. Registrati Registrati Spazzatura Registrati Stesso Stesso
3. Statico statico 0 (zero) RAM Stesso Fino alla fine del programma
4. Esterno esterno 0 (zero) RAM Globale Stesso

Programma di classe di archiviazione automatica

Esempio di programmazione1

#includere
int main ()

// variabile automatica per impostazione predefinita;
int x = 5;
printf ("%d \ n", x);

int x = 2;
printf ("%d \ n", x);

printf ("%d \ n", x);
restituzione 0;

Produzione

Spiegazione

Con il simbolo della freccia, possiamo scrivere una parola chiave automatica per rendere la variabile automatica. Se non scriviamo nulla lì, la variabile è un tipo automatico (per impostazione predefinita). La regola è di dare una priorità maggiore alla variabile locale se il nome di due variabili all'interno della funzione è lo stesso.

Registra il programma di classe di archiviazione

Esempio di programmazione 2

#includere
int main ()

// Viene utilizzata la parola chiave di registrazione;
Registrati int x = 4;
int y;
y = x ++;
X--;
y = x+5;
printf (" %d %d", x, y);
restituzione 0;

Produzione

Spiegazione

Se in un programma, alcune variabili vengono utilizzate ripetutamente, in tal caso, archiviamo la variabile X all'interno di un registro CPU anziché RAM. Riduce il tempo di elaborazione del nostro programma, ma è applicabile solo int e char medio piccolo memoria nero. Se il registro non è disponibile, converte automaticamente la classe di archiviazione del registro in una classe automatica.

Programma di classe di archiviazione statica

Esempio di programmazione 3

#includere
void f1 ();
int main ()

f1 ();
f1 ();
restituzione 0;

void f1 ()

int i = 0;
I ++;
printf ("i =%d \ n", i);

Produzione

Spiegazione

Qui otteniamo il risultato due 1 perché dichiariamo la variabile per impostazione predefinita.

Esempio di programmazione 4

#includere
void f1 ();
int main ()

f1 ();
f1 ();
restituzione 0;

void f1 ()

// è dichiarata variabile statica;
statico int i = 0;
I ++;
printf ("i =%d \ n", i);

Produzione

Spiegazione

Poiché è una variabile statica, questa variabile non viene distrutta dal corpo di F1. Quindi, quando F1 () si chiama 2a volta, l'output sarà 2.

Classe di archiviazione esterna

Esempio di programmazione 5

#includere
int x;
int main ()

// esterno è dichiarato;
esterno int x;
printf ("x =%d", x);
void f1 (vuoto);
f1 ();
printf ("x =%d", x);
restituzione 0;

void f1 ()

x ++;
printf ("x =%d", x);

Produzione

Spiegazione

In quanto è una variabile globale, la variabile è accessibile da qualsiasi parte del programma e la sua vita è in tutto il programma.Funzione 1st printf () stampare il valore di x = 0, poiché è valore predefinito = 0, quindi f1 () è chiamata, quindi x viene incrementato a 1 e stampare il valore 1. Quindi il controllo va di nuovo alla funzione principale () dopo f1 () e stampa di nuovo il valore di x 1.

Esempio di programmazione 6

#includere
int x;
void f1 ();
int main ()

esterno int x;
printf ("x =%d \ n", x);
f1 ();
printf ("x =%d \ n", x);
restituzione 0;

void f1 ()

int x = 5;
x ++;
printf ("x =%d \ n", x);

Produzione

Spiegazione

Poiché la variabile X nella funzione f1 () è una variabile automatica, è accessibile solo in F1 ().Quindi, qui printf () stampare il valore di x = 5 ma nella funzione principale (), x a è trattato come variabile esterna, poiché x è dichiarato globale. Quindi, stampa il valore di x = 0.

Dove dichiariamo la parola chiave esterna?

Una variabile esterna viene dichiarata al di fuori di qualsiasi funzione. Ma è indicato che la variabile sia esterna all'interno della funzione principale come mostrato in questo esempio, o è indicato ovunque nel programma.

Conclusione

Dal concetto sopra menzionato delle classi di archiviazione del linguaggio C, è chiaro al lettore che ogni volta che gestiamo i dati tramite il software, abbiamo bisogno di uno spazio variabile o di archiviazione per archiviare i dati. Ora abbiamo un'idea chiara da questo articolo su come i dati devono essere archiviati in una variabile.