C klasės saugojimo klasės: automatinė, išorinė, statinė, registrų klasė C

Kas yra C laikymo klasė?

Saugyklos klasė rodo kintamojo matomumą ir vietą. Jis nurodo, iš kurios kodo dalies galime pasiekti kintamąjį. C laikymo klasė naudojama šiems dalykams apibūdinti:

  • Kintama taikymo sritis.
  • Vieta, kurioje bus saugomas kintamasis.
  • Inicializuota kintamojo vertė.
  • Kintamojo gyvavimo laikas.
  • Kas gali pasiekti kintamąjį?

Taigi saugojimo klasė naudojama informacijai apie kintamąjį pateikti.

PASTABA: Kintamasis yra susijęs ne tik su duomenų tipu, jo verte, bet ir su saugyklos klase.

Iš viso yra keturių tipų standartinių laikymo klasių tipai. Žemiau esančioje lentelėje pateikiamos C laikymo klasės.

Sandėliavimo klasė Tikslas
automatinis Tai yra numatytoji saugyklos klasė.
išorinis Tai yra pasaulinis kintamasis.
statinis Tai yra vietinis kintamasis, galintis grąžinti vertę net tada, kai valdymas perkeliamas į funkcijos iškvietimą.
Registruotis Tai kintamasis, saugomas registre.

Šioje C pamokoje sužinosite įvairių tipų saugyklos klases C su pavyzdžiais:

  • Automatinio saugojimo klasė C
  • Išorinė laikymo klasė C
    • Pirmasis failas: main.c
    • Antrasis failas: originalas. C
  • Statinio laikymo klasė C
  • Užregistruokite saugojimo klasę C

Automatinio saugojimo klasė C

Kintamieji, apibrėžti naudojant automatinės saugojimo klasę, vadinami vietiniais kintamaisiais. Auto reiškia automatinio saugojimo klasę. Pagal numatytuosius nustatymus kintamasis yra automatinės saugyklos klasėje, jei jis nėra aiškiai nurodytas.

Automatinio kintamojo taikymo sritis yra ribojama tik tam tikram blokui. Kai valdiklis išeina iš bloko, prieiga yra sunaikinta. Tai reiškia, kad prie jo gali prisijungti tik blokas, kuriame deklaruojamas automatinis kintamasis.

Automatinis raktinis žodis naudojamas apibrėžti automatinės saugyklos klasę. Pagal numatytuosius nustatymus automatiniame kintamajame yra šiukšlių vertė.

Example, auto int age;

Žemiau pateikta programa apibrėžia funkciją su dviem vietiniais kintamaisiais

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

Mes imamės kitos programos, kuri parodo automatinio kintamojo taikymo srities „matomumo lygį“ kiekviename bloko kode, kurie yra nepriklausomi vienas nuo kito:

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

IŠĖJIMAS:

 3 2 1 

Išorinė laikymo klasė C

„Extern“ reiškia išorinės atminties klasę. Išorinė saugyklos klasė naudojama, kai turime visuotines funkcijas ar kintamuosius, kurie yra bendrai naudojami dviem ar daugiau failų.

Raktinis žodis išorinis naudojamas deklaruoti visuotinį kintamąjį ar funkciją kitame faile, kad būtų pateikta nuoroda į kintamąjį ar funkciją, kurie jau buvo apibrėžti pradiniame faile.

Kintamieji, apibrėžti naudojant išorinį raktinį žodį, vadinami visuotiniais kintamaisiais. Šie kintamieji yra prieinami visoje programoje. Atkreipkite dėmesį, kad išorinio kintamojo negalima inicijuoti, jis jau buvo apibrėžtas pradiniame faile.

Example, extern void display();

Pirmasis failas: main.c

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

Antrasis failas: originalas. C

#include i=48;

Rezultatas:

 value of the external integer is = 48

Norėdami sukompiliuoti ir paleisti pirmiau nurodytą kodą, atlikite toliau nurodytus veiksmus

1 žingsnis) Sukurkite naują projektą,

  1. Pasirinkite „Console Application“
  2. Spustelėkite „Go“

2 žingsnis) Pasirinkite C ir spustelėkite Pirmyn

3 žingsnis) Spustelėkite Pirmyn

4 žingsnis) Įveskite išsamią informaciją ir spustelėkite Pirmyn

5 žingsnis) Spustelėkite Baigti

6 žingsnis) Įdėkite pagrindinį kodą, kaip parodyta ankstesnėje programoje, į failą main.c ir išsaugokite

7 žingsnis) Sukurkite naują C failą [File -> new -> Empty File, save (as original.c) ir pridėkite jį prie dabartinio projekto, dialogo lange spustelėdami „OK“.

8 žingsnis) Įdėkite ir išsaugokite originaliame.c faile C kodą, parodytą ankstesniame pavyzdyje, be pagrindinės () funkcijos.

9 žingsnis. Sukurkite ir vykdykite savo projektą. Rezultatas parodytas kitame paveiksle

Statinio laikymo klasė C

Statiniai kintamieji naudojami funkcijoje / faile kaip vietiniai statiniai kintamieji. Jie taip pat gali būti naudojami kaip visuotinis kintamasis

  • Statinis vietinis kintamasis yra vietinis kintamasis, kuris išlaiko ir išsaugo savo vertę tarp funkcijų iškvietimų ar blokų ir lieka matomas tik funkcijai ar blokui, kuriame jis apibrėžtas.
  • Statiniai visuotiniai kintamieji yra visuotiniai kintamieji, kuriuos mato tik failas, kuriame jis yra deklaruotas.
Example: static int count = 10;

Atminkite, kad statinio kintamojo numatytoji pradinė vertė yra lygi nuliui ir inicijuojama tik vieną kartą per visą jo gyvenimą.

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

Rezultatas:

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

Visuotiniai kintamieji yra prieinami visame faile, o statiniai kintamieji yra prieinami tik tam tikrai kodo daliai.

Statinio kintamojo gyvenimo trukmė yra visame programos kode. Kintamajame, kuris yra deklaruojamas ar inicijuojamas naudojant statinį raktinį žodį, numatytoji reikšmė visada yra nulis.

Užregistruokite saugojimo klasę C

Jei norite greitai pasiekti šiuos kintamuosius, galite naudoti registrų saugyklos klasę, kai vietinius RAM norite išsaugoti vietinius kintamuosius funkcijose ar blokuose procesoriaus registruose, o ne RAM. Pavyzdžiui, „skaitikliai“ yra geras kandidatas, kuris turi būti saugomas registre.

Example: register int age;

Raktinių žodžių registras naudojamas deklaruoti registrų saugojimo klasę. Kintamųjų, deklaruotų naudojant registrų saugojimo klasę, gyvenimo trukmė yra visa programa.

Tai panašu į automatinio saugojimo klasę. Kintamasis ribojamas konkrečiu bloku. Vienintelis skirtumas yra tas, kad kintamieji, deklaruoti naudojant registrų saugojimo klasę, yra saugomi procesoriaus registruose, o ne atmintyje. „Register“ turi greitesnę prieigą nei pagrindinė atmintis.

Kintamieji, deklaruoti naudojant registro saugyklos klasę, neturi numatytosios vertės. Šie kintamieji dažnai deklaruojami programos pradžioje.

#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*/}}

IŠĖJIMAS:

error: address of register variable 'weight' requested

Kitoje lentelėje apibendrinami pagrindiniai kiekvienos saugojimo klasės ypatumai, kurie paprastai naudojami programuojant C

Sandėliavimo klasė Deklaracija Sandėliavimas Numatytoji pradinė vertė Taikymo sritis Gyvenimas
automatinis Funkcijos / bloko viduje Atmintis Nenuspėjamas Funkcijos / bloko ribose Funkcijos / bloko ribose
Registruotis Funkcijos / bloko viduje CPU registrai Šiukšlės Funkcijos / bloko ribose Funkcijos / bloko ribose
išorinis Ne visos funkcijos Atmintis Nulis Įveskite failą ir kitus failus, kuriuose kintamasis deklaruojamas kaip išorinis programos vykdymo laikas
Statinis (vietinis) Funkcijos / bloko viduje Atmintis Nulis Funkcijos / bloko ribose programos vykdymo laikas
Statinis (visuotinis) Ne visos funkcijos Atmintis Nulis Visuotinis programos vykdymo laikas

Santrauka

Šioje pamokoje aptarėme saugojimo klases C, apibendrindami:

  • C saugojimo klasė naudojama norint pateikti papildomą informaciją apie kintamąjį.
  • Saugojimo klasė nurodo kintamojo taikymo sritį ir gyvenimo trukmę.
  • Taip pat nurodoma, kas ir iš kur gali pasiekti kintamąjį?
  • Auto, extern, register, static yra keturios skirtingos C programos atminties klasės.
  • Kintamiesiems, funkcijoms ir parametrams apibrėžti naudojamas saugyklos klasės specifikatorius C kalba.
  • auto naudojamas vietiniam kintamajam, apibrėžtam bloke ar funkcijoje
  • register naudojamas kintamojo saugojimui procesoriaus registruose, o greičiau atminties vietai, kad būtų galima greitai pasiekti.
  • Statinis naudojamas tiek globaliems, tiek vietiniams kintamiesiems. Kiekvienas iš jų turi savo naudojimo atvejį C programoje.
  • Išorė naudojama dalijantis duomenimis tarp C projekto failų.

Įdomios straipsniai...