Statyczne w programowaniu C

Statyczne w programowaniu C
W tym samouczku wyjaśnimy statyczne słowo kluczowe, stosując je w zmiennych i funkcjach. STATIC jest słowem kluczowym używanym w programowaniu C i można go zastosować za pomocą następującej składni:

static typ danych nazwa zmiennej

Statyczne zmienne lokalne

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

//Przykład 1.C
#włączać
int fun1 ()

int count = 0;
count ++;
powrót;

int fun2 ()

static int liczba = 0;
count ++;
powrót;

int main ()

printf („FUN1 1st Call Returns: %d \ n”, fun1 ());
printf („FUN1 2. Zwroty połączenia: %d \ n \ n”, fun1 ());
printf („FUN2 1st Call zwrot: %d \ n”, fun2 ());
printf („FUN2 2nd Call Returns: %d \ n”, fun2 ());
powrót 0;


W przykładzie 1.C, mamy dwie funkcje: fun1 () I fun2 (). W fun1 (), Deklarujemy jedną zmienną (liczbę) i zainicjujemy ją do 0. Następnie zwiększamy zmienną liczby i zwracamy wynikową wartość. Za pomocą główny(), nazywamy fun1 () dwa razy i za każdym razem zwracana wartość 1, ponieważ zmienna zliczania jest wyczyszczona, gdy wezwanie fun1 () jest zakończony. W fun2 () Zadeklarowaliśmy zmienną liczby jako zmienną statyczną. Dlatego jego wartość jest zachowana. Za pomocą główny(), nazywamy fun2 () Dwa razy: po raz pierwszy wartość 1 jest zwracana, a po raz drugi zwraca wartość 2.

Statyczne zmienne globalne

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

Funkcje statyczne

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

Inicjalizacja zmiennych statycznych

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

// Przykład2.C
#włączać
int main ()

statyczne int i;
printf („Wartość i: %d \ n”, i);
powrót 0;


W przykładzie2.C, zadeklarowaliśmy zmienną statyczną I, która nie jest inicjowana. Ponieważ jednak zmienna jest statyczna, jest automatycznie inicjowana do 0.

Należy zauważyć, że zmienna statyczna musi być zainicjowana przez stały literał; Nie możemy użyć wartości zwracanej funkcji, aby zainicjować zmienną statyczną.

// Przykład3.C
#włączać
int fun1 ()

zwrot 5;

int main ()

static int i = fun1 ();
printf („Wartość i: %d \ n”, i);
powrót 0;


W przykładzie3.c, staramy się zainicjować zmienną statyczną za pomocą wartości zwracanej fun1 (). Jednak, jak widać, błąd jest zwracany po skompilowaniu kodu.

Streszczenie

Żywotność zmiennej statycznej i żywotność programu są równe.

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

Ani globalna zmienna statyczna, ani funkcja statyczna nie jest dostępna z programu innego niż ten, w którym została zdefiniowana.