Introducere în clase de stocare C

Fiecare valoare sau număr trebuie să fie stocată într-un anumit loc pentru utilizare ulterioară, nu? Acest lucru se poate face folosind variabile din C. Variabilele sunt zone de stocare utilizate în programele noastre. Fiecare variabilă va fi de un tip specific, cum ar fi un număr întreg, caracter și va avea, de asemenea, dimensiunea și aspectul specific în funcție de tipul lor. Fiecare tip de variabilă ar trebui stocată într-o parte specifică a memoriei și va avea permisiuni de acces restricționate sau specifice. Clasele de stocare în C determină în ce parte a memoriei ar trebui să fie stocată fiecare variabilă și, de asemenea, ea decide sfera (vizibilitatea) variabilei. Există patru tipuri de clase de stocare - auto, extern, static și registru. Un specificator de stocare poate fi menționat împreună cu variabila.

Tipuri de clase de depozitare în C

Tipurile de clase de depozitare în C sunt următoarele

1. Clasa de stocare automată

Toate variabilele declarate în cadrul unei funcții sau bloc, vor fi stocate în mod implicit într-un specificator auto, chiar dacă nu sunt definite în mod explicit. Specificatorul acestei clase de stocare este „auto”. Domeniul de aplicare sau vizibilitatea variabilelor din clasa de stocare automată este locală pentru blocul sau funcția definită. Variabila va fi distrusă odată ce ieșim din funcție sau din bloc.

Acest lucru poate fi explicat mai bine cu un exemplu. Luați în considerare exemplul dat mai jos:

Cod:

int main() (
int i = 2;
( int i = 4;
printf(“%d\n”, i);
)
printf(“%d\n”, i);
)

ieşire:

4

2

Aici, o variabilă I de tip întreg este declarată mai întâi cu valoarea 2 atribuită acesteia. În continuare, în interiorul unei bucle sau bloc din nou variabila I de același tip întreg este declarată cu valoarea 4 atribuită acesteia. Dacă nu este menționat specificatorul de stocare, în mod implicit, acesta va fi luat ca auto. În prima declarație printf, menționată în interiorul blocului, se va tipări 4 pe tipărirea valorii I. În timp ce în cea de-a doua declarație printf menționată în afara blocului, se va tipări valoarea I ca 2, valoarea menționată în afara blocul. Este mai bine să inițiați o anumită valoare pentru variabilele auto, deoarece există șanse de a obține orice valoare a gunoiului uneori, dacă inițializarea nu se face. Acest exemplu oferă o imagine clară a variabilelor auto și despre domeniul de aplicare local.

2. Înregistrează clasa de stocare

Variabilele stocate în clasa de stocare a registrelor vor avea, de asemenea, un scop local, ceea ce înseamnă că este accesibil sau vizibil numai în blocul în care este declarat. Această stocare este similară cu cea automată, dar principala diferență este că variabilele auto sunt stocate în memorie, în timp ce variabilele de înregistrare sunt stocate în registrele CPU. Acest lucru se face dacă dorim să accesăm foarte frecvent variabila. Acestea pot fi utilizate mai repede. Doar câteva variabile sunt stocate folosind specificatori de registru. Dacă nu există spațiu în registru, atunci acesta este păstrat doar în memorie. Nici o valoare inițială nu este atribuită variabilelor de registru. De asemenea, operatorul & (adresă de) nu poate fi utilizat pe variabilele registrului. De exemplu, variabilele utilizate pentru contoare sau tipuri de utilizare similare sunt stocate folosind specificatorul de registru.

3. Clasa de stocare statică

Variabila, poate fi globală sau locală, este stocată folosind specificatorul static din clasa de stocare statică atunci când variabila trebuie declarată o dată și valoarea trebuie păstrată. Când o variabilă este declarată statică, valoarea va fi salvată sau păstrată între apelurile funcționale. Se creează stocarea permanentă și se declară o singură dată. Când o variabilă locală este declarată statică, este creată o stocare permanentă și valoarea este păstrată de fiecare dată când este utilizată. De asemenea, în funcție de sfera variabilei locale obișnuite, variabilele locale statice sunt de asemenea vizibile numai pentru funcția sau blocul în care este definită. Când o variabilă globală este declarată statică, similară cu statica locală, se creează stocare permanentă și este declarată o singură dată. Dar, deși este globală, aceste variabile sunt vizibile doar în fișierul în care este definită.

Variabilele statice pot fi ilustrate clar folosind exemplul de mai jos:

Cod:

int samplefunc() (
static int a = 0;
a = a+2;
return a;
)
int main() (
int result1 = samplefunc();
int result2 = samplefunc();
printf("%d\n", result1);
printf("%d\n", result2);
)

ieşire:

2

4

Aici, în programul de mai sus, când se numește samplefunc (), variabila a este definită și inițializată prima dată și se creează o stocare permanentă pentru aceasta. Prin expresia matematică folosită în funcție, valoarea unui apoi devine 2. Dar atunci când același eșantion de probă () este numit a doua oară, variabila a nu este definită sau inițializată din nou, ci ia ultima valoare reținută și continuă cu operația realizând rezultatul final ca 4. Acesta este principalul mod de utilizare și avantaj al variabilelor statice.

4. Clasa de stocare exterioară

Variabila declarată externă, descrie că variabila este definită în altă parte a unui alt program. Aceste variabile externe sunt utilizate atunci când dorim ca orice variabilă sau funcție definită într-un program să fie utilizată și în alt fișier. Variabilele cu specificator extern sunt stocate în clasa de stocare externă. Când variabila este declarată externă este un program, ea specifică legătura externă și, prin urmare, nu este definită sau inițiată din nou. Depozitarea este alocată doar una și, de asemenea, inițializată o singură dată. Dacă variabilele externe sunt inițializate din nou cu o altă valoare din programul extern, vom primi o eroare care indică „Redefinirea variabilei”.

Variabilele externe sunt explicate folosind exemplul de mai jos:

Cod:

Prg1.c

int count;
int main() (
count = 10;
)

Prg2.c

extern int count;
int main() (
printf(“%d”, count);
)

ieşire:

10

Aici, numărul variabilelor întregi este declarat în primul program C (Prg1.c) și în interiorul funcției principale, este inițializat la valoarea 10. În al doilea program C, aceeași variabilă de număr este declarată folosind specificatorul extern, care specifică că există legătură externă, iar valoarea este preluată din stocare, iar valoarea 10 este dată numărului de valori atunci când o tipărim în al doilea program. Aceasta este utilizarea variabilelor externe. Astfel, în funcție de scopul diferit, fiecare clasă de stocare este utilizată pentru variabile adecvate și este declarată cu specificații corespunzători.

Articole recomandate

Acesta este un ghid pentru clasele de stocare C. Aici vom discuta tipuri de clase de stocare care includ clasa de stocare automată, clasa de stocare a înregistrării, clasa de stocare statică și clasa de stocare exterioară. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Ce este JavaBeans?
  2. ES6 vs ES5
  3. C ++ vs Visual C ++
  4. C vs C ++ Performanță