C Razred shranjevanja

V tej vadnici boste spoznali obseg in življenjsko dobo lokalnih in globalnih spremenljivk. Spoznali boste tudi statične spremenljivke in spremenljivke registra.

Vsaka spremenljivka v programiranju C ima dve lastnosti: tip in razred shranjevanja.

Tip se nanaša na podatkovni tip spremenljivke. Razred shranjevanja določa obseg, vidnost in življenjsko dobo spremenljivke.

Obstajajo 4 vrste razreda shranjevanja:

  1. samodejno
  2. zunanji
  3. statična
  4. register

Lokalna spremenljivka

Spremenljivke, deklarirane znotraj bloka, so samodejne ali lokalne spremenljivke. Lokalne spremenljivke obstajajo samo znotraj bloka, v katerem je navedena.

Vzemimo primer.

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

Ko zaženete zgornji program, boste dobili napačno neprijavljeni identifikator i. To je zato, ker je i razglašen znotraj forbloka zanke. Zunaj bloka je neprijavljeno.

Vzemimo še en primer.

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

V zgornjem primeru je n1 lokalno na main()in n2 je lokalno na func().

To pomeni, da ne morete dostopati do spremenljivke n1 znotraj, func()ker obstaja samo znotraj main(). Podobno ne morete dostopati do spremenljivke n2 znotraj, main()ker obstaja samo znotraj func().

Globalna spremenljivka

Spremenljivke, ki so deklarirane zunaj vseh funkcij, so znane kot zunanje ali globalne spremenljivke. Dostopne so iz katere koli funkcije znotraj programa.

Primer 1: Globalna spremenljivka

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

Izhod

 n = 7

Recimo, da je v file1. Če poskusite uporabiti to spremenljivko v drugi datoteki file2, se bo prevajalnik pritožil. Za rešitev te težave se s ključno besedo externv file2označuje, da je zunanja spremenljivka deklarirana v drugi datoteki.

Spremenljivka v registru

Ključna registerbeseda se uporablja za deklariranje registrskih spremenljivk. Registrske spremenljivke naj bi bile hitrejše od lokalnih spremenljivk.

Vendar pa sodobni prevajalniki zelo dobro optimizirajo kodo in obstaja redka verjetnost, da bo uporaba spremenljivk registra pospešila vaš program.

Če ne delate na vdelanih sistemih, kjer veste, kako optimizirati kodo za dano aplikacijo, spremenljivk registra ni treba uporabiti.

Statična spremenljivka

Statična spremenljivka je deklarirana z uporabo staticključne besede. Na primer;

 statični int i;

Vrednost statične spremenljivke ostane do konca programa.

Primer 2: Statična spremenljivka

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

Izhod

 6. 11.

Med prvim klicem funkcije se vrednost c inicializira na 1. Njegova vrednost se poveča za 5. Zdaj je vrednost c 6, ki je natisnjena na zaslon.

Med drugim klicem funkcije c ni spet inicializiran na 1. To je zato, ker je c statična spremenljivka. Vrednost c se poveča za 5. Zdaj bo njegova vrednost 11, kar je natisnjeno na zaslon.

Zanimive Članki...