statička vrsta podataka naziv varijable
Statičke lokalne varijable
Kad je varijabla u funkciji statična, ona čuva svoju vrijednost između poziva funkcije.
// Primjer1.c#include
int fun1 ()
broj brojeva = 0;
brojati ++;
broj vraćanja;
int fun2 ()
statički broj int = 0;
brojati ++;
broj vraćanja;
int main ()
printf ("fun1 1. poziv vraća:% d \ n", fun1 ());
printf ("fun1 drugi poziv vraća:% d \ n \ n", fun1 ());
printf ("fun2 1. poziv vraća:% d \ n", fun2 ());
printf ("fun2 drugi poziv vraća:% d \ n", fun2 ());
return 0;
U primjeru 1.c, imamo dvije funkcije: zabava1 () i fun2 (). U zabava1 (), deklariramo jednu varijablu (count) i inicijaliziramo je na 0. Zatim povećavamo varijablu count i vraćamo rezultirajuću vrijednost. Koristeći glavni(), mi zovemo zabava1 () dva puta i svaki put se vraća vrijednost 1 jer se varijabla count briše prilikom poziva na zabava1 () je dovršen. U fun2 () proglasili smo varijablu count kao statičku varijablu. Stoga se njegova vrijednost čuva. Koristeći glavni(), mi zovemo fun2 () dva puta: prvi put se vraća vrijednost 1, a drugi put vraća vrijednost 2.
Statičke globalne varijable
Statička globalna varijabla ponaša se na isti način kao i ostale globalne varijable, ali ne može joj se 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 programa C.
Inicijalizacija statičkih varijabli
Ako statička varijabla nije eksplicitno inicijalizirana, tada je inicijalizirana kao 0.
// Primjer2.c#include
int main ()
statički int i;
printf ("Vrijednost i:% d \ n", i);
return 0;
U Primjeru2.c, proglasili 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 konstantni literal; ne možemo koristiti povratnu vrijednost funkcije za inicijalizaciju statičke varijable.
// Primjer3.c#include
int fun1 ()
povratak 5;
int main ()
statički int i = fun1 ();
printf ("Vrijednost i:% d \ n", i);
return 0;
U Primjeru3.c, pokušavamo inicijalizirati statičku varijablu koristeći povratnu vrijednost zabava1 (). Međutim, kao što vidite, pogreška se vraća prilikom prevođenja koda.
Sažetak
Životni vijek statičke varijable i životni vijek programa jednaki su.
Ako statička varijabla nije inicijalizirana, tada će poprimiti zadanu vrijednost 0.
Ni globalnoj statičkoj varijabli ni statičkoj funkciji nije dostupan program izuzev onog u kojem je definirana.