C Klasa skladištenja

U ovom vodiču naučit ćete o opsegu i vijeku trajanja lokalnih i globalnih varijabli. Također, naučit ćete o statičkim i registracijskim varijablama.

Svaka varijabla u programiranju na C ima dva svojstva: tip i klasu pohrane.

Tip se odnosi na tip podataka varijable. Klasa pohrane određuje opseg, vidljivost i vijek trajanja varijable.

Postoje 4 vrste klase pohrane:

  1. automatski
  2. vanjski
  3. statički
  4. Registar

Lokalna varijabla

Varijable deklarirane unutar bloka su automatske ili lokalne varijable. Lokalne varijable postoje samo unutar bloka u kojem su deklarirane.

Uzmimo primjer.

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

Kada pokrenete gornji program, dobit ćete pogrešku neprijavljeni identifikator i. To je zato što je i deklariran unutar forbloka petlje. Izvan bloka je neprijavljeno.

Uzmimo još jedan primjer.

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

U gornjem primjeru, n1 je lokalno za, main()a n2 je lokalno za func().

To znači da ne možete pristupiti n1 varijabli iznutra func()jer ona postoji samo iznutra main(). Slično tome, ne možete pristupiti n2 varijabli iznutra main()jer ona postoji samo iznutra func().

Globalna varijabla

Varijable koje su deklarirane izvan svih funkcija poznate su kao vanjske ili globalne varijable. Dostupni su iz bilo koje funkcije unutar programa.

Primjer 1: Globalna varijabla

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

Izlaz

 n = 7

Pretpostavimo da je globalna varijabla deklarirana u file1. Ako pokušate upotrijebiti tu varijablu u drugoj datoteci file2, sastavljač će se žaliti. Da bi se riješio ovaj problem, ključna riječ externkoristi se file2za označavanje da je vanjska varijabla deklarirana u drugoj datoteci.

Registriraj varijablu

registerKljučna riječ se koristi da se proglasi registara varijabli. Registracijske varijable trebale su biti brže od lokalnih varijabli.

Međutim, moderni kompajleri vrlo su dobri u optimizaciji koda, a rijetka je šansa da će upotreba varijabli registra ubrzati vaš program.

Ako ne radite na ugrađenim sustavima u kojima znate kako optimizirati kod za danu aplikaciju, neće se koristiti varijable registra.

Statička varijabla

Statička varijabla deklarira se pomoću staticključne riječi. Na primjer;

 statički int i;

Vrijednost statičke varijable zadržava se do kraja programa.

Primjer 2: Statička varijabla

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

Izlaz

 6 11

Tijekom prvog poziva funkcije, vrijednost c se inicijalizira na 1. Njegova vrijednost se povećava za 5. Sada je vrijednost c 6, koja se ispisuje na ekranu.

Tijekom drugog poziva funkcije c se ponovno ne inicijalizira na 1. To je zato što je c statička varijabla. Vrijednost c povećava se za 5. Sada će njegova vrijednost biti 11, što je ispisano na zaslonu.

Zanimljivi članci...