statična vrsta podatkov ime spremenljivke
Statične lokalne spremenljivke
Ko je spremenljivka v funkciji statična, spremenljivka ohrani svojo vrednost med klici funkcije.
// Primer1.c#include
int fun1 ()
int count = 0;
štetje ++;
štetje donosov;
int fun2 ()
statično štetje int = 0;
štetje ++;
štetje donosov;
int main ()
printf ("fun1 1. klic vrne:% d \ n", fun1 ());
printf ("fun1 drugi klic vrne:% d \ n \ n", fun1 ());
printf ("fun2 prvi klic vrne:% d \ n", fun2 ());
printf ("fun2 drugi klic vrne:% d \ n", fun2 ());
vrnitev 0;
V primeru 1.c, imamo dve funkciji: zabava1 () in fun2 (). V zabava1 (), razglasimo eno spremenljivko (count) in jo inicializiramo na 0. Nato povečamo spremenljivko štetja in vrnemo nastalo vrednost. Uporaba glavni (), mi kličemo zabava1 () dvakrat in vsakič se vrne vrednost 1, ker se spremenljivka števila počisti, ko je klic na zabava1 () je končana. V fun2 () spremenljivko count smo razglasili za statično spremenljivko. Zato je njegova vrednost ohranjena. Uporaba glavni (), 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, je inicializirana kot 0.
// Primer2.c#include
int main ()
statični int i;
printf ("Vrednost i:% d \ n", i);
vrnitev 0;
V primeru2.c, razglasili smo statično spremenljivko i, ki ni inicializirana. Ker pa je spremenljivka statična, se samodejno inicializira na 0.
Pomembno je vedeti, da mora biti statična spremenljivka inicializirana s konstantno literalo; ne moremo uporabiti vrnjene vrednosti funkcije za inicializacijo statične spremenljivke.
// Primer3.c#include
int fun1 ()
vrnitev 5;
int main ()
statični int i = fun1 ();
printf ("Vrednost i:% d \ n", i);
vrnitev 0;
V primeru3.c, poskusimo inicializirati statično spremenljivko z uporabo vrnjene vrednosti zabava1 (). Kot vidite, se pri prevajanju kode vrne napaka.
Povzetek
Življenjska doba statične spremenljivke in življenjska doba programa sta enaki.
Če statična spremenljivka ni inicializirana, bo dobila privzeto vrednost 0.
Niti globalna statična spremenljivka niti statična funkcija nista dostopni iz programa, razen tistega, v katerem je bila definirana.