Статичко програмирање у Ц

Static C Programming



У овом водичу ћемо објаснити статичку кључну реч применом у променљивим и функцијама. Статиц је кључна реч која се користи у Ц програмирању и може се применити помоћу следеће синтаксе:

статички {дата типе} {назив променљиве}







Статичке локалне променљиве

Када је променљива у функцији статична, променљива задржава своју вредност између позива функције.



//Екампле1.ц

#инцлуде

интфун1()
{

интцоунт=0;
цоунт++;
повратакцоунт;
}

интфун2()
{
статичан интцоунт=0;
цоунт++;
повратакцоунт;
}

интглавни()
{
принтф ('фун1 враћа први позив: %д н',фун1());
принтф ('фун1 Други позив враћа: %д н н',фун1());

принтф ('фун2 враћа први позив: %д н',фун2());
принтф ('фун2 2. позив се враћа: %д н',фун2());

повратак 0;
}


У примеру 1.ц имамо две функције: фун1 () и фун2 () . Ин фун1 () , декларишемо једну променљиву (цоунт) и иницијализујемо је на 0. Затим повећавамо променљиву цоунт и враћамо резултујућу вредност. Користећи главни() , зовемо фун1 () два пута, и сваки пут се враћа вредност 1 јер се променљива цоунт брише када се позив на фун1 () је завршен. Ин фун2 () декларисали смо променљиву цоунт као статичку променљиву. Због тога је његова вредност очувана. Користећи главни() , зовемо фун2 () два пута: први пут се враћа вредност 1, а други пут вредност 2.



Статичке глобалне променљиве

Статичка глобална променљива се понаша на исти начин као и друге глобалне променљиве, али јој се не може приступити из другог Ц програма.





Статичке функције

У Ц, функције су подразумевано глобалне. Међутим, ако декларишемо статичку функцију, онда је функција локална и не може јој се приступити из другог Ц програма.

Иницијализација статичких променљивих

Ако статичка променљива није експлицитно иницијализована, онда се она иницијализује као 0.



//Екампле2.ц

#инцлуде

интглавни()
{
статичан инти;

принтф ('Вредност и: %д н',и);

повратак 0;
}


У Примеру 2.ц, декларисали смо статичку променљиву и која није иницијализована. Међутим, пошто је променљива статична, она се аутоматски иницијализује на 0.

Важно је напоменути да статичка променљива мора бити иницијализована константним литералом; не можемо користити повратну вредност функције за иницијализацију статичке променљиве.

//Екампле3.ц

#инцлуде

интфун1()
{
повратак 5;
}

интглавни()
{
статичан инти=фун1();
принтф ('Вредност и: %д н',и);
повратак 0;
}


У Примеру3.ц, покушавамо да покренемо статичку променљиву користећи повратну вредност од фун1 () . Међутим, као што видите, грешка се враћа приликом састављања кода.

Резиме

Животни век статичке променљиве и животни век програма су једнаки.

Ако статичка променљива није иницијализована, она ће имати подразумевану вредност 0.

Ни глобална статичка променљива ни статичка функција нису доступне из другог програма осим у оном у коме је дефинисана.