Statický v programovaní v jazyku C.

Static C Programming



V tomto tutoriáli vysvetlíme statické kľúčové slovo jeho použitím v premenných a funkciách. Static je kľúčové slovo používané v programovaní v jazyku C a je možné ho použiť pomocou nasledujúcej syntaxe:

statický {dátový typ} {názov premennej}







Statické lokálne premenné

Ak je premenná vo funkcii statická, premenná si zachová svoju hodnotu medzi volaniami funkcií.



//Priklad1.c

#zahrnúť

intzábava 1()
{

intpočítať=0;
počítať++;
vrátiť sapočítať;
}

intzábava 2()
{
statický intpočítať=0;
počítať++;
vrátiť sapočítať;
}

intHlavná()
{
printf ('fun1 1. hovor sa vracia: %d n',zábava 1());
printf ('fun1 Druhý hovor sa vráti: %d n n',zábava 1());

printf ('fun2 Vráti sa prvý hovor: %d n',zábava 2());
printf ('fun2 2. hovor sa vráti: %d n',zábava 2());

vrátiť sa 0;
}


V príklade 1.c máme dve funkcie: zábava1 () a zábava2 () . V zábava1 () , deklarujeme jednu premennú (počet) a inicializujeme ju na 0. Potom premennú počítania zvýšime a vrátime výslednú hodnotu. Použitím Hlavná() , voláme zábava1 () dvakrát a zakaždým sa vráti hodnota 1, pretože premenná count sa vymaže, keď zavoláte na zábava1 () je dokončená. V zábava2 () premennú count sme deklarovali ako statickú premennú. Preto je jeho hodnota zachovaná. Použitím Hlavná() , voláme zábava2 () dvakrát: prvýkrát sa vráti hodnota 1 a druhýkrát sa vráti hodnota 2.



Statické globálne premenné

Statická globálna premenná sa správa rovnako ako ostatné globálne premenné, ale nie je k nej prístup z iného programu C.





Statické funkcie

V jazyku C sú funkcie predvolene globálne. Ak však deklarujeme statickú funkciu, potom je táto funkcia lokálna a nie je k nej prístup z iného programu C.

Inicializácia statických premenných

Ak statická premenná nie je explicitne inicializovaná, inicializuje sa ako 0.



//Priklad2.c

#zahrnúť

intHlavná()
{
statický inti;

printf („Hodnota i: %d n',i);

vrátiť sa 0;
}


V príklade2.c sme deklarovali statickú premennú i, ktorá nie je inicializovaná. Pretože je však premenná statická, automaticky sa inicializuje na 0.

Je dôležité poznamenať, že statická premenná musí byť inicializovaná konštantným literálom; nemôžeme použiť návratovú hodnotu funkcie na inicializáciu statickej premennej.

//Priklad3.c

#zahrnúť

intzábava 1()
{
vrátiť sa 5;
}

intHlavná()
{
statický inti=zábava 1();
printf („Hodnota i: %d n',i);
vrátiť sa 0;
}


V príklade3.c sa pokúšame inicializovať statickú premennú pomocou návratovej hodnoty zábava1 () . Ako však vidíte, pri kompilácii kódu sa vráti chyba.

Zhrnutie

Životnosť statickej premennej a životnosť programu sú rovnaké.

Ak statická premenná nie je inicializovaná, nadobudne predvolenú hodnotu 0.

Globálna statická premenná ani statická funkcia nie sú prístupné z iného programu, ako je program, v ktorom bola definovaná.