C saugojimo klasė

Šioje pamokoje sužinosite apie vietinių ir pasaulinių kintamųjų taikymo sritį ir naudojimo laiką. Taip pat sužinosite apie statinius ir registruotuosius kintamuosius.

Kiekvienas C programavimo kintamasis turi dvi savybes: tipą ir saugojimo klasę.

Tipas nurodo kintamojo duomenų tipą. Sandėliavimo klasė nustato kintamojo taikymo sritį, matomumą ir tarnavimo laiką.

Yra 4 saugojimo klasės tipai:

  1. automatinis
  2. išorinis
  3. statinis
  4. Registruotis

Vietinis kintamasis

Bloko viduje deklaruojami kintamieji yra automatiniai arba vietiniai kintamieji. Vietiniai kintamieji egzistuoja tik to bloko, kuriame jis deklaruotas, viduje.

Paimkime pavyzdį.

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

Vykdydami pirmiau nurodytą programą gausite klaidą, nedeklaruotą identifikatorių i. Taip yra todėl, kad aš deklaruojamas forciklo bloke. Už bloko ribų jis nedeklaruojamas.

Paimkime kitą pavyzdį.

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

Ankstesniame pavyzdyje n1 yra vietinis main()ir n2 yra lokalus func().

Tai reiškia, kad jūs negalite pasiekti n1 kintamojo viduje, func()nes jis egzistuoja tik viduje main(). Panašiai negalite pasiekti n2 kintamojo viduje, main()nes jis egzistuoja tik viduje func().

Visuotinis kintamasis

Kintamieji, kurie deklaruojami už visų funkcijų ribų, vadinami išoriniais arba visuotiniais kintamaisiais. Juos galima pasiekti iš bet kurios programos funkcijos.

1 pavyzdys: visuotinis kintamasis

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

Rezultatas

 n = 7

Tarkime, visuotinis kintamasis yra deklaruojamas file1. Jei bandysite naudoti tą kintamąjį kitame faile file2, kompiliatorius skundžiasi. Norėdami išspręsti šią problemą, raktinis žodis externnaudojamas file2nurodant, kad išorinis kintamasis yra deklaruojamas kitame faile.

Registruoti kintamąjį

registerRaktažodis naudojamas deklaruoti registro kintamuosius. Registro kintamieji turėjo būti greitesni už vietinius.

Tačiau šiuolaikiniai kompiliatoriai labai gerai optimizuoja kodą ir yra reta tikimybė, kad naudojant registrų kintamuosius jūsų programa bus greitesnė.

Registrų kintamieji nenaudojami, nebent dirbate su įterptosiomis sistemomis, kuriose žinote, kaip optimizuoti nurodytos programos kodą.

Statinis kintamasis

Statinis kintamasis deklaruojamas naudojant staticraktinį žodį. Pavyzdžiui;

 statinis int i;

Statinio kintamojo vertė išlieka iki programos pabaigos.

2 pavyzdys: statinis kintamasis

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

Rezultatas

 6 11

Pirmojo funkcijos skambučio metu c reikšmė inicijuojama iki 1. Jo vertė padidinama 5. Dabar c vertė yra 6, kuri atspausdinama ekrane.

Antrojo funkcijos skambučio metu c vėl neinicializuojamas į 1. Taip yra todėl, kad c yra statinis kintamasis. Reikšmė c padidinama 5. Dabar jos vertė bus 11, kuri atspausdinta ekrane.

Įdomios straipsniai...