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.