Clase de stocare în C: auto, extern, static, clasă de înregistrare în C

Cuprins:

Anonim

Ce este clasa de stocare în C?

O clasă de stocare reprezintă vizibilitatea și locația unei variabile. Acesta spune din ce parte a codului putem accesa o variabilă. O clasă de stocare în C este utilizată pentru a descrie următoarele lucruri:

  • Domeniul variabil.
  • Locația în care va fi stocată variabila.
  • Valoarea inițializată a unei variabile.
  • O viață a unei variabile.
  • Cine poate accesa o variabilă?

Astfel, o clasă de stocare este utilizată pentru a reprezenta informațiile despre o variabilă.

NOTĂ: O variabilă nu este asociată doar cu un tip de date, cu valoarea acestuia, ci și cu o clasă de stocare.

Există în total patru tipuri de clase de stocare standard. Tabelul de mai jos reprezintă clasele de stocare în C.

Clasa de depozitare Scop
auto Este o clasă de stocare implicită.
extern Este o variabilă globală.
static Este o variabilă locală care este capabilă să returneze o valoare chiar și atunci când controlul este transferat la apelul de funcție.
Inregistreaza-te Este o variabilă care este stocată într-un registru.

În acest tutorial C, veți învăța diferite tipuri de clase de stocare în C cu exemple-

  • Clasa de stocare automată în C.
  • Clasa de stocare externă în C.
    • Primul fișier: main.c
    • Al doilea fișier: original.c
  • Clasa de depozitare statică în C.
  • Înregistrați clasa de stocare în C.

Clasa de stocare automată în C.

Variabilele definite utilizând clasa de stocare automată sunt numite variabile locale. Standuri auto pentru clasa de stocare automată. O variabilă se află în mod implicit în clasa de stocare automată dacă nu este specificată în mod explicit.

Domeniul de aplicare al unei variabile automate este limitat doar cu blocul special. Odată ce controlul iese din bloc, accesul este distrus. Aceasta înseamnă că numai blocul în care este declarată variabila automată îl poate accesa.

Un cuvânt cheie auto este utilizat pentru a defini o clasă de stocare automată. În mod implicit, o variabilă automată conține o valoare de gunoi.

Example, auto int age;

Programul de mai jos definește o funcție cu două variabile locale

int add(void) {int a=13;auto int b=48;return a+b;}

Luăm un alt program care arată nivelul de vizibilitate „nivel de vizibilitate” pentru variabilele automate din fiecare cod de bloc care sunt independente între ele:

#include int main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}

IEȘIRE:

 3 2 1 

Clasa de stocare externă în C.

Standuri externe pentru clasa de stocare externă. Clasa de stocare externă este utilizată atunci când avem funcții globale sau variabile care sunt partajate între două sau mai multe fișiere.

Cuvântul cheie extern este folosit pentru declararea unei variabile sau funcții globale într-un alt fișier pentru a furniza referința variabilei sau funcției care a fost deja definită în fișierul original.

Variabilele definite utilizând un cuvânt cheie extern sunt numite variabile globale. Aceste variabile sunt accesibile pe tot parcursul programului. Observați că variabila externă nu poate fi inițializată, a fost deja definită în fișierul original.

Example, extern void display();

Primul fișier: main.c

#include extern i;main() {printf("value of the external integer is = %d\n", i);return 0;}

Al doilea fișier: original.c

#include i=48;

Rezultat:

 value of the external integer is = 48

Pentru a compila și rula codul de mai sus, urmați pașii de mai jos

Pasul 1) Creați un proiect nou,

  1. Selectați Consola Application
  2. Faceți clic pe Go

Pasul 2) Selectați C și faceți clic pe Următorul

Pasul 3) Faceți clic pe Următorul

Pasul 4) Introduceți detalii și faceți clic pe Următorul

Pasul 5) Faceți clic pe Finalizare

Pasul 6) Puneți codul principal așa cum se arată în programul anterior în fișierul main.c și salvați-l

Pasul 7) Creați un fișier C nou [Fișier -> nou -> Fișier gol, salvați (ca original.c) și adăugați-l la proiectul curent făcând clic pe „OK” în caseta de dialog.

Pasul 8) Puneți și salvați codul C al fișierului original.c prezentat în exemplul anterior fără funcția main ().

Pasul 9) Construiți și rulați proiectul. Rezultatul este prezentat în figura următoare

Clasa de depozitare statică în C.

Variabilele statice sunt utilizate în funcție / fișier ca variabile statice locale. Ele pot fi folosite și ca variabilă globală

  • Variabila locală statică este o variabilă locală care își păstrează și stochează valoarea între apeluri de funcții sau bloc și rămâne vizibilă numai funcției sau blocului în care este definită.
  • Variabilele globale statice sunt variabile globale vizibile numai pentru fișierul în care este declarată.
Example: static int count = 10;

Rețineți că variabila statică are o valoare inițială implicită zero și este inițializată o singură dată în timpul vieții sale.

#include  /* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}

Rezultat:

iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9

Variabilele globale sunt accesibile în tot fișierul, în timp ce variabilele statice sunt accesibile numai părții particulare a unui cod.

Durata de viață a unei variabile statice este în întregul cod al programului. O variabilă declarată sau inițializată utilizând cuvânt cheie static conține întotdeauna zero ca valoare implicită.

Înregistrați clasa de stocare în C.

Puteți utiliza clasa de stocare a registrului atunci când doriți să stocați variabile locale în funcții sau blocuri în registre CPU în loc de RAM pentru a avea acces rapid la aceste variabile. De exemplu, „contoare” sunt un bun candidat pentru a fi stocate în registru.

Example: register int age;

Cuvântul cheie registru este utilizat pentru a declara o clasă de stocare a registrului. Variabilele declarate folosind clasa de stocare a registrelor au o durată de viață pe tot parcursul programului.

Este similar cu clasa de stocare automată. Variabila este limitată la blocul particular. Singura diferență este că variabilele declarate utilizând clasa de stocare a registrelor sunt stocate în registrele CPU în loc de o memorie. Registrul are acces mai rapid decât cel al memoriei principale.

Variabilele declarate folosind clasa de stocare a registrului nu au valoare implicită. Aceste variabile sunt adesea declarate la începutul unui program.

#include  /* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}

IEȘIRE:

error: address of register variable 'weight' requested

Tabelul următor rezumă principalele caracteristici ale fiecărei clase de stocare care sunt utilizate în mod obișnuit în programarea C.

Clasa de depozitare Declaraţie Depozitare Valoare inițială implicită Domeniul de aplicare Durata de viață
auto În interiorul unei funcții / bloc Memorie Imprevizibil În cadrul funcției / blocului În cadrul funcției / blocului
Inregistreaza-te În interiorul unei funcții / bloc Registre CPU Gunoi În cadrul funcției / blocului În cadrul funcției / blocului
extern În afara tuturor funcțiilor Memorie Zero Întreg fișierul și alte fișiere în care variabila este declarată ca externă timpul de rulare al programului
Static (local) În interiorul unei funcții / bloc Memorie Zero În cadrul funcției / blocului timpul de rulare al programului
Static (global) În afara tuturor funcțiilor Memorie Zero Global timpul de rulare al programului

rezumat

În acest tutorial am discutat despre clasele de stocare în C, pentru a rezuma:

  • O clasă de stocare în C este utilizată pentru a reprezenta informații suplimentare despre o variabilă.
  • Clasa de stocare reprezintă scopul și durata de viață a unei variabile.
  • De asemenea, spune cine poate accesa o variabilă și de unde?
  • Auto, extern, register, static sunt cele patru clase de stocare diferite dintr-un program C.
  • Un specificator de clasă de stocare în limbajul C este utilizat pentru a defini variabile, funcții și parametri.
  • auto este utilizat pentru o variabilă locală definită în cadrul unui bloc sau funcție
  • registru este utilizat pentru a stoca variabila în registrele CPU, mai degrabă locația de memorie pentru acces rapid.
  • Static este utilizat atât pentru variabilele globale, cât și pentru cele locale. Fiecare are cazul său de utilizare în cadrul unui program C.
  • Extern este utilizat pentru partajarea datelor între fișierele de proiect C.