Статично в C програмиране

Static C Programming



В този урок ще обясним статичната ключова дума, като я приложим в променливи и функции. Static е ключова дума, използвана в програмирането на C, и може да бъде приложена чрез следния синтаксис:

статичен {тип данни} {име на променлива}







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

Когато променлива във функция е статична, променливата запазва стойността си между извикванията на функция.



// Пример1.c

#включва

intзабавление1()
{

intброя=0;
броя++;
връщанеброя;
}

intзабавление2()
{
статичен intброя=0;
броя++;
връщанеброя;
}

intглавен()
{
printf ('fun1 връща първото обаждане: %dн',забавление1());
printf ('fun1 Връща второ повикване: %dнн',забавление1());

printf ('fun2 връща първото обаждане: %dн',забавление2());
printf ('fun2 връща второ повикване: %dн',забавление2());

връщане 0;
}


В пример 1.в имаме две функции: fun1 () и fun2 () . В fun1 () , декларираме една променлива (count) и я инициализираме на 0. След това увеличаваме променливата count и връщаме получената стойност. Използвайки main () , ние се обаждаме fun1 () два пъти и всеки път се връща стойност 1, защото променливата count се изчиства при извикването към fun1 () е завършено. В fun2 () декларирахме променливата count като статична променлива. Следователно стойността му се запазва. Използвайки main () , ние се обаждаме fun2 () два пъти: първият път се връща стойност 1, а вторият се връща стойност 2.



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

Статичната глобална променлива се държи по същия начин като другите глобални променливи, но не може да бъде достъпна от друга C програма.





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

В C функциите са глобални по подразбиране. Ако обаче декларираме статична функция, тогава функцията е локална и не може да бъде достъпна от друга C програма.

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

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



// Пример2.в

#включва

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

printf („Стойност на i: %dн',i);

връщане 0;
}


В Пример 2.в декларирахме статична променлива i, която не е инициализирана. Въпреки това, тъй като променливата е статична, тя автоматично се инициализира на 0.

Важно е да се отбележи, че статичната променлива трябва да бъде инициализирана от константален литерал; не можем да използваме връщаща стойност на функция за инициализиране на статична променлива.

// Пример3.в

#включва

intзабавление1()
{
връщане 5;
}

intглавен()
{
статичен inti=забавление1();
printf („Стойност на i: %dн',i);
връщане 0;
}


В Example3.c се опитваме да инициализираме статична променлива, като използваме връщащата стойност на fun1 () . Както можете да видите, при компилирането на кода се връща грешка.

Резюме

Животът на статична променлива и животът на програмата са равни.

Ако статична променлива не е инициализирана, тя ще приеме стойност по подразбиране 0.

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