Staatiline C programmeerimises

Static C Programming



Selles õpetuses selgitame staatilist märksõna, rakendades seda muutujates ja funktsioonides. Staatiline on C -programmeerimises kasutatav märksõna ja seda saab rakendada järgmise süntaksi abil:

staatiline {andmetüüp} {muutuja nimi}







Staatilised kohalikud muutujad

Kui funktsiooni muutuja on staatiline, säilitab muutuja oma väärtuse funktsioonikutsete vahel.



//Näide1.c

#kaasake

intlõbus 1()
{

intloendama=0;
loendama++;
tagasiloendama;
}

intlõbus2()
{
staatiline intloendama=0;
loendama++;
tagasiloendama;
}

intpeamine()
{
printf ('fun1 Esimene kõne tagasi: %d n',lõbus 1());
printf ('fun1 2. kõne tagasi: %d n n',lõbus 1());

printf ('fun2 Esimene kõne tagasi: %d n',lõbus2());
printf ('fun2 2. kõne tagasi: %d n',lõbus2());

tagasi 0;
}


Näites 1.c on meil kaks funktsiooni: lõbus1 () ja lõbus2 () . Sisse lõbus1 () , deklareerime ühe muutuja (loenduse) ja lähtestame selle väärtuseks 0. Seejärel suurendame loendamismuutujat ja tagastame saadud väärtuse. Kasutades peamine () , me helistame lõbus1 () kaks korda ja iga kord tagastatakse väärtus 1, kuna loendusmuutuja kustutatakse, kui helistatakse lõbus1 () on lõpetatud. Sisse lõbus2 () kuulutasime muutuja loendaja staatiliseks muutujaks. Seetõttu säilitatakse selle väärtus. Kasutades peamine () , me helistame lõbus2 () 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, on see funktsioon kohalik ja sellele ei pääse juurde teisest C -programmist.

Staatiliste muutujate initsialiseerimine

Kui staatilist muutujat ei ole selgesõnaliselt initsialiseeritud, siis lähtestatakse see väärtuseks 0.



//Näide2.c

#kaasake

intpeamine()
{
staatiline inti;

printf ('I väärtus: %d n',i);

tagasi 0;
}


Näites2.c deklareerisime staatilise muutuja i, mida ei lähtestata. Kuna muutuja on aga staatiline, lähtestatakse see automaatselt väärtuseks 0.

Oluline on märkida, et staatiline muutuja tuleb initsialiseerida konstantse literaali abil; me ei saa funktsiooni tagasiväärtust kasutada staatilise muutuja initsialiseerimiseks.

//Näide3.c

#kaasake

intlõbus 1()
{
tagasi 5;
}

intpeamine()
{
staatiline inti=lõbus 1();
printf ('I väärtus: %d n',i);
tagasi 0;
}


Näites 3.c proovime initsialiseerida staatilise muutuja, kasutades tagasiväärtust lõbus1 () . Kuid nagu näete, tagastatakse koodi koostamisel viga.

Kokkuvõte

Staatilise muutuja eluiga ja programmi eluiga on võrdsed.

Kui staatilist muutujat ei lähtestata, võtab see vaikeväärtuse 0.

Ei globaalsele staatilisele muutujale ega staatilisele funktsioonile ei pääse juurde programm, mis ei ole määratletud.