статички тип података име променљиве
Статичке локалне променљиве
Када је променљива у функцији статична, она чува своју вредност између позива функције.
// Пример1.ц#инцлуде
инт фун1 ()
инт цоунт = 0;
цоунт ++;
ретурн цоунт;
инт фун2 ()
статички број инт = 0;
цоунт ++;
ретурн цоунт;
инт маин ()
принтф ("фун1 1. позив враћа:% д \ н", фун1 ());
принтф ("фун1 други позив враћа:% д \ н \ н", фун1 ());
принтф ("фун2 1. позив враћа:% д \ н", фун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.
Ни глобалној статичкој променљивој ни статичкој функцији није доступан програм изузев оног у коме је дефинисана.