Statično programiranje v C.

Static C Programming



V tej vadnici bomo statično ključno besedo razložili z uporabo v spremenljivkah in funkcijah. Static je ključna beseda, ki se uporablja v programiranju C, in jo je mogoče uporabiti z naslednjo skladnjo:

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.