staatiline data type muutuja nimi
Staatilised lokaalsed muutujad
Kui funktsiooni muutuja on staatiline, säilitab muutuja oma väärtuse funktsioonikutsete vahel.
// Näide1.c# kaasata
int fun1 ()
int arv = 0;
loend ++;
tagasiarvestus;
int fun2 ()
staatiline int-arv = 0;
loend ++;
tagasiarvestus;
int main ()
printf ("fun1 1. kõne tagastab:% d \ n", fun1 ());
printf ("fun1 2. kõne tagastab:% d \ n \ n", fun1 ());
printf ("fun2 1. kõne tagastab:% d \ n", fun2 ());
printf ("fun2 2. kõne tagastab:% d \ n", fun2 ());
tagastama 0;
Näites 1.c, meil on kaks funktsiooni: fun1 () ja fun2 (). Sisse fun1 (), deklareerime ühe muutuja (loenduse) ja lähtestame selle väärtuseks 0. Seejärel suurendame loendusmuutujat ja tagastame saadud väärtuse. Kasutamine peamine (), me helistame fun1 () kaks korda ja iga kord tagastatakse väärtus 1, kuna loenduse muutuja kustutatakse helistamisel fun1 () on valmis. Sisse fun2 () deklareerisime muutuja staatiliseks muutujaks. Seetõttu säilitatakse selle väärtus. Kasutamine peamine (), me helistame fun2 () kaks korda: esimesel korral tagastatakse väärtus 1 ja teisel korral väärtus 2.
Staatilised globaalsed muutujad
Staatiline globaalne muutuja käitub samamoodi nagu teised globaalsed muutujad, kuid sellele ei pääse juurde teisest C-programmist.
Staatilised funktsioonid
C-s on funktsioonid vaikimisi globaalsed. Kui aga kuulutame staatilise funktsiooni, siis on funktsioon lokaalne ja sellele ei pääse juurde teisest C-programmist.
Staatiliste muutujate initsialiseerimine
Kui staatilist muutujat pole initsialiseeritud, siis initsialiseeritakse see kui 0.
// Näide2.c# kaasata
int main ()
staatiline int i;
printf ("i väärtus:% d \ n", i);
tagastama 0;
Näites2.c, kuulutasime staatilise muutuja i, mida ei initsialiseerita. Kuna muutuja on staatiline, lähtestatakse see automaatselt väärtusele 0.
Oluline on märkida, et staatiline muutuja tuleb initsialiseerida konstantse litraaliga; staatilise muutuja lähtestamiseks ei saa me funktsiooni tagastusväärtust kasutada.
Näide3.c# kaasata
int fun1 ()
tagastus 5;
int main ()
staatiline int i = fun1 ();
printf ("i väärtus:% d \ n", i);
tagastama 0;
Näites3.c, proovime lähtestada staatilise muutuja, kasutades tagastusväärtust fun1 (). Kuid nagu näete, tagastatakse koodi koostamisel viga.
Kokkuvõte
Staatilise muutuja eluiga ja programmi eluiga on võrdsed.
Kui staatilist muutujat ei initsialiseerita, saab see vaikeväärtuse 0.
Üldisele staatilisele muutujale ega staatilisele funktsioonile pole juurdepääsu muust programmist kui see, milles see määratleti.