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á.