Statičko programiranje u C.

Static C Programming



U ovom ćemo vodiču objasniti statičku ključnu riječ primjenom u varijablama i funkcijama. Static je ključna riječ koja se koristi u C programiranju i može se primijeniti pomoću sljedeće sintakse:

statički {data type} {naziv varijable}







Statičke lokalne varijable

Kada je varijabla u funkciji statička, varijabla čuva svoju vrijednost između poziva funkcije.



// Primjer1.c

#uključi

intzabava1()
{

intračunati=0;
računati++;
povratakračunati;
}

intzabava2()
{
statički intračunati=0;
računati++;
povratakračunati;
}

intglavni()
{
printf ('fun1 vraća prvi poziv: %d n',zabava1());
printf ('fun1 2. poziv se vraća: %d n n',zabava1());

printf ('fun2 vraća prvi poziv: %d n',zabava2());
printf ('fun2 vraća 2. poziv: %d n',zabava2());

povratak 0;
}


U primjeru 1.c imamo dvije funkcije: zabava1 () i zabava2 () . U zabava1 () , deklariramo jednu varijablu (count) i inicijaliziramo je na 0. Zatim povećavamo varijablu count i vraćamo dobivenu vrijednost. Korištenje glavni() , mi zovemo zabava1 () dva puta i svaki put se vraća vrijednost 1 jer se varijabla count briše kada se pozove na zabava1 () je dovršen. U zabava2 () varijablu count smo proglasili statičkom varijablom. Stoga je njegova vrijednost očuvana. Korištenje glavni() , mi zovemo zabava2 () dva puta: prvi put se vraća vrijednost 1, a drugi put vrijednost 2.



Statičke globalne varijable

Statička globalna varijabla ponaša se na isti način kao i druge globalne varijable, ali joj se ne može pristupiti iz drugog C programa.





Statičke funkcije

U C su funkcije prema zadanim postavkama globalne. Međutim, ako deklariramo statičku funkciju, tada je funkcija lokalna i ne može joj se pristupiti iz drugog C programa.

Inicijalizacija statičkih varijabli

Ako statička varijabla nije izričito inicijalizirana, tada se inicijalizira kao 0.



// Primjer2.c

#uključi

intglavni()
{
statički inti;

printf ('Vrijednost i: %d n',i);

povratak 0;
}


U primjeru 2.c, deklarirali smo statičku varijablu i koja nije inicijalizirana. Međutim, budući da je varijabla statična, automatski se inicijalizira na 0.

Važno je napomenuti da statičku varijablu mora inicijalizirati konstantan literal; ne možemo koristiti povratnu vrijednost funkcije za inicijalizaciju statičke varijable.

// Primjer3.c

#uključi

intzabava1()
{
povratak 5;
}

intglavni()
{
statički inti=zabava1();
printf ('Vrijednost i: %d n',i);
povratak 0;
}


U primjeru3.c pokušavamo pokrenuti statičku varijablu pomoću povratne vrijednosti zabava1 () . Međutim, kao što vidite, greška se vraća prilikom sastavljanja koda.

Sažetak

Vijek trajanja statičke varijable i vijek trajanja programa jednaki su.

Ako statička varijabla nije inicijalizirana, tada će poprimiti zadanu vrijednost 0.

Globalna statička varijabla niti statička funkcija nisu dostupne iz drugog programa osim u onom u kojem je definirana.