C Salvestusklass

Selles õpetuses saate teada kohalike ja globaalsete muutujate ulatuse ja eluea kohta. Samuti saate teada staatiliste ja registrimuutujate kohta.

Igal C-programmeerimise muutujal on kaks omadust: tüüp ja salvestusklass.

Tüüp viitab muutuja andmetüübile. Ja salvestusklass määrab muutuja ulatuse, nähtavuse ja eluea.

Hoiustamisklassi on 4 tüüpi:

  1. automaatne
  2. väline
  3. staatiline
  4. Registreeri

Kohalik muutuja

Ploki sees deklareeritud muutujad on automaatsed või lokaalsed muutujad. Kohalikud muutujad eksisteerivad ainult selles plokis, milles see deklareeritakse.

Võtame näite.

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

Ülaltoodud programmi käivitamisel saate vea deklareerimata identifikaatori i. Sellepärast, et i deklareeritakse silmusploki sees for. Väljaspool plokki on see deklareerimata.

Võtame veel ühe näite.

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

Ülaltoodud näites on n1 lokaalne main()ja n2 on lokaalne func().

See tähendab, et te ei pääse sisse muutujale n1, func()kuna see eksisteerib ainult sees main(). Samamoodi ei pääse te sisse n2 muutujale, main()kuna see eksisteerib ainult sees func().

Globaalne muutuja

Muutujaid, mis on deklareeritud väljaspool kõiki funktsioone, nimetatakse välisteks või globaalseteks muutujateks. Neile pääseb juurde mis tahes programmi sees olevast funktsioonist.

Näide 1: globaalne muutuja

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

Väljund

 n = 7

Oletame, et globaalne muutuja deklareeritakse file1. Kui proovite seda muutujat mõnes muus failis kasutada file2, kurdab kompilaator. Selle probleemi lahendamiseks externkasutatakse märksõna , file2mis näitab, et väline muutuja on deklareeritud teises failis.

Registreerige muutuja

registerMärksõna on kasutatud kuulutada registris muutujad. Registrimuutujad pidid olema kiiremad kui lokaalsed muutujad.

Kuid tänapäevased kompilaatorid on koodide optimeerimisel väga head ja on haruldane võimalus, et registrimuutujate kasutamine muudab teie programmi kiiremaks.

Kui te ei tegele manustatud süsteemidega, kus teate, kuidas antud rakenduse jaoks koodi optimeerida, ei kasutata registrimuutujaid.

Staatiline muutuja

Staatiline muutuja deklareeritakse staticmärksõna abil. Näiteks;

 staatiline int i;

Staatilise muutuja väärtus püsib programmi lõpuni.

Näide 2: staatiline muutuja

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

Väljund

 6 11

Esimese funktsioonikõne ajal lähtestatakse c väärtuseks 1. Selle väärtust suurendatakse 5 võrra. Nüüd on c väärtus 6, mis prinditakse ekraanile.

Teise funktsioonikõne ajal ei lähtestata c uuesti väärtusele 1. Sellepärast, et c on staatiline muutuja. Väärtust c suurendatakse 5 võrra. Nüüd on selle väärtus 11, mis prinditakse ekraanile.

Huvitavad Artiklid...