C Uzglabāšanas klase

Šajā apmācībā jūs uzzināsiet par lokālo un globālo mainīgo apjomu un kalpošanas laiku. Jūs arī uzzināsiet par statiskajiem un reģistrētajiem mainīgajiem.

Katram C programmēšanas mainīgajam ir divas īpašības: tips un krātuves klase.

Tips attiecas uz mainīgā datu tipu. Krātuves klase nosaka mainīgā darbības jomu, redzamību un kalpošanas laiku.

Ir 4 veidu uzglabāšanas klases:

  1. automātiska
  2. ārējs
  3. statisks
  4. reģistrēties

Vietējais mainīgais

Bloka ietvaros deklarētie mainīgie ir automātiskie vai lokālie mainīgie. Vietējie mainīgie pastāv tikai tajā blokā, kurā tas ir deklarēts.

Ņemsim piemēru.

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

Palaidot iepriekš minēto programmu, jūs saņemsit kļūdu nedeklarētu identifikatoru i. Tas ir tāpēc, ka es esmu deklarēts forcilpas blokā. Ārpus bloka tas nav deklarēts.

Ņemsim vēl vienu piemēru.

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

Iepriekš minētajā piemērā n1 ir lokāls main()vietnei un n2 ir lokāls vietnei func().

Tas nozīmē, ka jūs nevarat piekļūt n1 mainīgajam iekšpusē, func()jo tas pastāv tikai iekšpusē main(). Tāpat jūs nevarat piekļūt n2 mainīgajam iekšpusē, main()jo tas pastāv tikai iekšpusē func().

Globālais mainīgais

Mainīgie, kas deklarēti ārpus visām funkcijām, ir pazīstami kā ārējie vai globālie mainīgie. Tie ir pieejami no jebkuras funkcijas programmas iekšienē.

1. piemērs: globālais mainīgais

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

Rezultāts

 n = 7

Pieņemsim, ka globālais mainīgais ir deklarēts file1. Ja mēģināsiet izmantot šo mainīgo citā failā file2, kompilators sūdzēsies. Lai atrisinātu šo problēmu, atslēgvārds externtiek izmantots, file2lai norādītu, ka ārējais mainīgais ir deklarēts citā failā.

Reģistrēt mainīgo

registerAtslēgvārds tiek izmantots, lai paziņot reģistru mainīgos. Reģistru mainīgajiem vajadzēja būt ātrākiem nekā lokālajiem.

Tomēr mūsdienu kompilatori ļoti labi veic kodu optimizāciju, un ir reta iespēja, ka reģistru mainīgo izmantošana padarīs jūsu programmu ātrāku.

Ja strādājat ar iegultām sistēmām, kurās jūs zināt, kā optimizēt kodu attiecīgajai lietojumprogrammai, reģistru mainīgie netiek izmantoti.

Statiskais mainīgais

Statisko mainīgo deklarē, izmantojot staticatslēgvārdu. Piemēram;

 statiskā int i;

Statiskā mainīgā vērtība saglabājas līdz programmas beigām.

2. piemērs: statiskais mainīgais

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

Rezultāts

 6 11

Pirmā funkcijas izsaukuma laikā c vērtība tiek inicializēta uz 1. Tās vērtība tiek palielināta par 5. Tagad c vērtība ir 6, kas tiek izdrukāta uz ekrāna.

Otrā funkcijas izsaukuma laikā c vairs netiek inicializēts uz 1. Tas ir tāpēc, ka c ir statisks mainīgais. Vērtība c tiek palielināta par 5. Tagad tā vērtība būs 11, kas ir uzdrukāta uz ekrāna.

Interesanti raksti...