statično {podatkovni tip} {ime spremenljivke}
Statične lokalne spremenljivke
Kadar je spremenljivka v funkciji statična, spremenljivka ohrani svojo vrednost med klici funkcije.
//Primer1.c
#vključi
intzabava1()
{
intšteti=0;
šteti++;
vrnitevšteti;
}
intzabava2()
{
statična intšteti=0;
šteti++;
vrnitevšteti;
}
intglavni()
{
printf ('fun1 Vrne se prvi klic: %d n',zabava1());
printf ('fun1 Drugi klic se vrne: %d n n',zabava1());
printf ('fun2 vrne prvi klic: %d n',zabava2());
printf ('fun2 Vrne se drugi klic: %d n',zabava2());
vrnitev 0;
}
V primeru 1.c imamo dve funkciji: zabava1 () in fun2 () . V zabava1 () , razglasimo eno spremenljivko (count) in jo inicializiramo na 0. Nato spremenljivko povečamo in vrnemo nastalo vrednost. Uporaba main () , mi kličemo zabava1 () dvakrat in vsakič se vrne vrednost 1, ker se spremenljivka count počisti, ko je klic na zabava1 () je zaključeno. V fun2 () spremenljivko count smo razglasili za statično spremenljivko. Zato je njegova vrednost ohranjena. Uporaba main () , mi kličemo fun2 () dvakrat: prvič se vrne vrednost 1, drugič pa vrednost 2.
Statične globalne spremenljivke
Statična globalna spremenljivka se obnaša enako kot druge globalne spremenljivke, vendar do nje ni mogoče dostopati iz drugega programa C.
Statične funkcije
V C so funkcije privzeto globalne. Če pa razglasimo statično funkcijo, je funkcija lokalna in do nje ni mogoče dostopati iz drugega programa C.
Inicializacija statičnih spremenljivk
Če statična spremenljivka ni izrecno inicializirana, se inicializira kot 0.
//Primer2.c
#vključi
intglavni()
{
statična intjaz;
printf („Vrednost i: %d n',jaz);
vrnitev 0;
}
V primeru2.c smo razglasili statično spremenljivko i, ki ni inicializirana. Ker pa je spremenljivka statična, se samodejno inicializira na 0.
Pomembno je omeniti, da mora statično spremenljivko inicializirati konstanten literal; ne moremo uporabiti povratne vrednosti funkcije za inicializacijo statične spremenljivke.
//Primer3.c#vključi
intzabava1()
{
vrnitev 5;
}
intglavni()
{
statična intjaz=zabava1();
printf („Vrednost i: %d n',jaz);
vrnitev 0;
}
V Primeru3.c poskušamo statično spremenljivko inicializirati z uporabo vrnjene vrednosti zabava1 () . Kot lahko vidite, se pri sestavljanju kode vrne napaka.
Povzetek
Življenjska doba statične spremenljivke in življenjska doba programa sta enaki.
Če statična spremenljivka ni inicializirana, bo prevzela privzeto vrednost 0.
Niti globalna statična spremenljivka niti statična funkcija nista dostopna iz drugega programa, razen v tistem, v katerem je bila definirana.