Static sa C Programming

Static C Programming



Sa tutorial na ito, ipapaliwanag namin ang static na keyword sa pamamagitan ng paglalapat nito sa mga variable at function. Ang Static ay isang keyword na ginamit sa C programming, at maaari itong mailapat sa pamamagitan ng paggamit ng sumusunod na syntax:

static na {uri ng data} {variable na pangalan}







Static na mga lokal na variable

Kapag ang isang variable sa isang pagpapaandar ay static, pinapanatili ng variable ang halaga nito sa pagitan ng mga tawag sa pagpapaandar.



//Example1.c

# isama

intmasaya1()
{

intbilangin=0;
bilangin++;
bumalik kabilangin;
}

intmasaya2()
{
static intbilangin=0;
bilangin++;
bumalik kabilangin;
}

intpangunahing()
{
printf ('fun1 1st call Return:% d n',masaya1());
printf ('fun1 2nd call Return:% d n n',masaya1());

printf ('fun2 1st call Return:% d n',masaya2());
printf ('fun2 2nd tawag ay nagbabalik:% d n',masaya2());

bumalik ka 0;
}


Sa Halimbawa 1.c, mayroon kaming dalawang pag-andar: masaya1 () at masaya2 () . Sa masaya1 () , idineklara namin ang isang variable (bilang) at pinasimulan ito sa 0. Pagkatapos, pinapataas namin ang variable ng bilang at ibabalik ang nagresultang halaga. Gamit pangunahing () , Tinatawag namin masaya1 () dalawang beses, at sa bawat oras, ang isang halaga ng 1 ay ibabalik dahil ang bilang ng variable ay nalilimas kapag ang tawag sa masaya1 () ay nakumpleto. Sa masaya2 () idineklara namin ang bilang ng variable bilang isang static variable. Samakatuwid, ang halaga nito ay napanatili. Gamit pangunahing () , Tinatawag namin masaya2 () dalawang beses: sa unang pagkakataon, isang halagang 1 ay naibalik, at sa pangalawang pagkakataon, isang halagang 2 ang naibalik.



Static global variable

Ang isang static global variable ay kumikilos sa parehong paraan tulad ng iba pang mga pandaigdigan na variable, ngunit hindi ito mai-access mula sa ibang C program.





Static na pag-andar

Sa C, ang mga pagpapaandar ay pandaigdigan bilang default. Gayunpaman, kung ideklara namin ang isang static na pag-andar, kung gayon ang pagpapaandar ay lokal at hindi ma-access mula sa ibang C program.

Initialization ng mga static variable

Kung ang isang static variable ay hindi malinaw na naisimula, pagkatapos ay isinisialma ito bilang 0.



//Example2.c

# isama

intpangunahing()
{
static intako;

printf ('Halaga ng i:% d n',ako);

bumalik ka 0;
}


Sa Halimbawa2.c, idineklara namin ang isang static variable i na hindi naisasimulan. Gayunpaman, dahil ang variable ay static, awtomatiko itong naisasagawa sa 0.

Mahalagang tandaan na ang isang static variable ay dapat na mapasimulan ng isang pare-pareho na literal; hindi namin maaaring gamitin ang halaga ng pagbabalik ng isang function upang pasimulan ang isang static variable.

//Example3.c

# isama

intmasaya1()
{
bumalik ka 5;
}

intpangunahing()
{
static intako=masaya1();
printf ('Halaga ng i:% d n',ako);
bumalik ka 0;
}


Sa Halimbawa3.c, sinusubukan naming simulan ang isang static variable sa pamamagitan ng paggamit ng halaga ng pagbabalik ng masaya1 () . Gayunpaman, tulad ng nakikita mo, isang error ang naibalik kapag naipon ang code.

Buod

Ang buhay ng isang static variable at ang panghabambuhay ng programa ay pantay.

Kung ang isang static variable ay hindi naisauna, kukuha ito ng isang default na halagang 0.

Ni ang isang pandaigdigang variable na static o ang isang static na pag-andar ay hindi maa-access mula sa isang programa maliban sa isa kung saan ito natukoy.