Statyczne w programowaniu C

Static C Programming



W tym samouczku wyjaśnimy słowo kluczowe static, stosując je w zmiennych i funkcjach. Static to słowo kluczowe używane w programowaniu w języku C, które można zastosować przy użyciu następującej składni:

statyczny {typ danych} {nazwa zmiennej}







Statyczne zmienne lokalne

Gdy zmienna w funkcji jest statyczna, zmienna zachowuje swoją wartość między wywołaniami funkcji.



//Przykład1.c

#włączać

intzabawa1()
{

intliczyć=0;
liczyć++;
powrótliczyć;
}

intzabawa2()
{
statyczny intliczyć=0;
liczyć++;
powrótliczyć;
}

intGłówny()
{
printf ('fun1 pierwsze wywołanie zwraca : %d ',zabawa1());
printf ('fun1 drugie wywołanie zwraca : %d ',zabawa1());

printf ('fun2 zwraca pierwsze połączenie: %d ',zabawa2());
printf ('fun2 drugie połączenie zwraca : %d ',zabawa2());

powrót 0;
}


W przykładzie 1.c mamy dwie funkcje: zabawa1() oraz zabawa2() . w zabawa1() , deklarujemy jedną zmienną (count) i inicjujemy ją na 0. Następnie inkrementujemy zmienną count i zwracamy wynikową wartość. Za pomocą Główny() , nazywamy zabawa1() dwukrotnie i za każdym razem zwracana jest wartość 1, ponieważ zmienna count jest czyszczona, gdy wywołanie zabawa1() jest zakończony. w zabawa2() zadeklarowaliśmy zmienną count jako zmienną statyczną. Dlatego jego wartość jest zachowana. Za pomocą Główny() , nazywamy zabawa2() dwa razy: za pierwszym razem zwracana jest wartość 1, a za drugim zwracana jest wartość 2.



Statyczne zmienne globalne

Statyczna zmienna globalna zachowuje się w taki sam sposób jak inne zmienne globalne, ale nie można uzyskać do niej dostępu z innego programu C.





Funkcje statyczne

W C funkcje są domyślnie globalne. Jeśli jednak zadeklarujemy funkcję statyczną, to funkcja jest lokalna i nie można do niej uzyskać dostępu z innego programu C.

Inicjalizacja zmiennych statycznych

Jeśli zmienna statyczna nie jest jawnie zainicjowana, jest inicjowana jako 0.



//Przykład2.c

#włączać

intGłówny()
{
statyczny inti;

printf ('Wartość i: %d ',i);

powrót 0;
}


W przykładzie2.c zadeklarowaliśmy zmienną statyczną i, która nie jest inicjowana. Jednak ponieważ zmienna jest statyczna, jest automatycznie inicjowana na 0.

Należy zauważyć, że zmienna statyczna musi być inicjowana stałym literałem; nie możemy użyć wartości zwracanej przez funkcję do zainicjowania zmiennej statycznej.

//Przykład3.c

#włączać

intzabawa1()
{
powrót 5;
}

intGłówny()
{
statyczny inti=zabawa1();
printf ('Wartość i: %d ',i);
powrót 0;
}


W przykładzie 3.c próbujemy zainicjować zmienną statyczną przy użyciu wartości zwracanej przez zabawa1() . Jednak, jak widać, podczas kompilacji kodu zwracany jest błąd.

Streszczenie

Czas życia zmiennej statycznej i czas życia programu są równe.

Jeśli zmienna statyczna nie zostanie zainicjowana, przyjmie domyślną wartość 0.

Ani globalna zmienna statyczna, ani funkcja statyczna nie są dostępne z programu innego niż ten, w którym zostały zdefiniowane.