C programavimo statika

Static C Programming



Šioje pamokoje mes paaiškinsime statinį raktinį žodį, pritaikydami jį kintamiesiems ir funkcijoms. Statinis yra raktinis žodis, naudojamas programuojant C, ir jį galima pritaikyti naudojant šią sintaksę:

statinis {duomenų tipas} {kintamojo pavadinimas}







Statiniai vietiniai kintamieji

Kai funkcijos kintamasis yra statinis, kintamasis išsaugo savo vertę tarp funkcijų iškvietimų.



//Pavyzdys1.c

#įtraukti

tarptlinksmas1()
{

tarptskaičiuoti=0;
skaičiuoti++;
grįžtiskaičiuoti;
}

tarptlinksmas2()
{
statinis tarptskaičiuoti=0;
skaičiuoti++;
grįžtiskaičiuoti;
}

tarptpagrindinis()
{
printf ('fun1 Pirmasis skambutis grįžta: %d n',linksmas1());
printf ('fun1 Antrasis skambutis grįžta: %d n n',linksmas1());

printf ('fun2 Pirmasis skambutis grįžta: %d n',linksmas2());
printf („fun2“ grįžta antrasis skambutis: %d n',linksmas2());

grįžti 0;
}


1.c pavyzdyje turime dvi funkcijas: smagu1 () ir linksmas 2 () . In smagu1 () , mes deklaruojame vieną kintamąjį (skaičių) ir inicializuojame jį į 0. Tada mes padidiname skaičiaus kintamąjį ir grąžiname gautą vertę. Naudojant pagrindinis () , mes skambiname smagu1 () du kartus ir kiekvieną kartą grąžinama reikšmė 1, nes skambinant kvietimas į kintamąjį pašalinamas smagu1 () yra baigtas. In linksmas 2 () skaičiavimo kintamąjį paskelbėme kaip statinį kintamąjį. Todėl jo vertė išsaugoma. Naudojant pagrindinis () , mes skambiname linksmas 2 () du kartus: pirmą kartą grąžinama 1 vertė, o antrą kartą - 2 vertė.



Statiniai globalūs kintamieji

Statinis visuotinis kintamasis elgiasi taip pat, kaip ir kiti globalūs kintamieji, tačiau jo negalima pasiekti iš kitos C programos.





Statinės funkcijos

C pagal numatytuosius nustatymus funkcijos yra visuotinės. Tačiau, jei paskelbsime statinę funkciją, funkcija yra vietinė ir jos negalima pasiekti iš kitos C programos.

Statinių kintamųjų inicijavimas

Jei statinis kintamasis nėra aiškiai inicijuotas, jis inicijuojamas kaip 0.



//Pavyzdys2.c

#įtraukti

tarptpagrindinis()
{
statinis tarpti;

printf („I reikšmė: %d n',i);

grįžti 0;
}


Pavyzdyje2.c paskelbėme neinicializuotą statinį kintamąjį i. Tačiau kadangi kintamasis yra statinis, jis automatiškai inicijuojamas į 0.

Svarbu pažymėti, kad statinis kintamasis turi būti inicijuojamas pastoviu pažodžiui; negalime naudoti funkcijos grąžinimo vertės statiniam kintamajam inicijuoti.

//Pavyzdys3.c

#įtraukti

tarptlinksmas1()
{
grįžti 5;
}

tarptpagrindinis()
{
statinis tarpti=linksmas1();
printf („I reikšmė: %d n',i);
grįžti 0;
}


Pavyzdyje3.c bandome inicijuoti statinį kintamąjį naudodami grąžinimo reikšmę smagu1 () . Tačiau, kaip matote, surinkus kodą grąžinama klaida.

Santrauka

Statinio kintamojo tarnavimo laikas ir programos trukmė yra lygūs.

Jei statinis kintamasis nėra inicijuotas, jis įgis numatytąją reikšmę 0.

Nei visuotinis statinis kintamasis, nei statinė funkcija nėra prieinamos kitoje programoje nei ta, kurioje jis buvo apibrėžtas.