statinis duomenų tipas kintamasis vardas
Statiniai vietiniai kintamieji
Kai funkcijos kintamasis yra statiškas, kintamasis išsaugo savo vertę tarp funkcijos iškvietimų.
// 1 pavyzdys.c# įtraukti
int fun1 ()
int skaičius = 0;
skaičius ++;
grąžinimo skaičius;
int fun2 ()
statinis int skaičius = 0;
skaičius ++;
grąžinimo skaičius;
int main ()
printf ("fun1 1 skambutis grąžina:% d \ n", fun1 ());
printf ("fun1 2-asis skambutis grąžina:% d \ n \ n", fun1 ());
printf ("fun2 1-asis skambutis grąžina:% d \ n", fun2 ());
printf ("fun2 2nd call return:% d \ n", fun2 ());
grąžinti 0;
1 pavyzdyje.c, mes turime dvi funkcijas: fun1 () ir fun2 (). Į fun1 (), deklaruojame vieną kintamąjį (skaičių) ir inicijuojame jį į 0. Tada mes padidinsime skaičiavimo kintamąjį ir grąžinsime gautą vertę. Naudojant pagrindinis (), mes skambiname fun1 () du kartus ir kiekvieną kartą grąžinama reikšmė 1, nes skaičiuojamasis kintamasis išvalomas, kai skambinama fun1 () yra baigtas. Į fun2 () paskelbėme skaičiaus kintamąjį kaip statinį kintamąjį. Todėl jo vertė yra išsaugota. Naudojant pagrindinis (), mes skambiname fun2 () du kartus: pirmą kartą grąžinama reikšmė 1, o antrą kartą - 2.
Statiniai visuotiniai kintamieji
Statinis visuotinis kintamasis elgiasi taip pat, kaip ir kiti visuotiniai kintamieji, tačiau jo negalima pasiekti iš kitos C programos.
Statinės funkcijos
C atveju pagal numatytuosius nustatymus funkcijos yra globalios. Tačiau jei deklaruojame statinę funkciją, tai funkcija yra vietinė ir prie jos negalima prisijungti iš kitos C programos.
Statinių kintamųjų inicijavimas
Jei statinis kintamasis nėra aiškiai inicializuotas, jis inicijuojamas kaip 0.
// 2 pavyzdys.c# įtraukti
int main ()
statinis int i;
printf ("i reikšmė:% d \ n", i);
grąžinti 0;
2 pavyzdyje.c, mes paskelbėme statinį kintamąjį i, kuris nėra inicializuotas. Kadangi kintamasis yra statinis, jis automatiškai inicijuojamas iki 0.
Svarbu pažymėti, kad statinis kintamasis turi būti inicijuojamas pastoviuoju literalu; negalime naudoti funkcijos grąžinimo vertės, kad inicializuotume statinį kintamąjį.
// 3 pavyzdys.c# įtraukti
int fun1 ()
grįžti 5;
int main ()
statinis int i = fun1 ();
printf ("i reikšmė:% d \ n", i);
grąžinti 0;
3 pavyzdyje.c, mes bandome inicijuoti statinį kintamąjį naudodami grąžinimo vertę fun1 (). Tačiau, kaip matote, kompiliuojant kodą pateikiama klaida.
Santrauka
Statinio kintamojo ir programos gyvavimo laikas yra vienodi.
Jei statinis kintamasis nėra inicializuotas, jis įgaus numatytąją reikšmę 0.
Nei pasaulinio statinio kintamojo, nei statinės funkcijos negalima pasiekti iš kitos programos, nei ta, kurioje jis buvo apibrėžtas.