logo

Statyczny w C

Statyczny to słowo kluczowe używane w języku programowania C. Można go używać zarówno ze zmiennymi, jak i funkcjami, tj. możemy zadeklarować zarówno zmienną statyczną, jak i funkcję statyczną. Zwykła zmienna ograniczona jest do zakresu, w jakim jest zdefiniowana, natomiast zakres zmiennej statycznej obejmuje cały program.

Statyczne słowo kluczowe może być użyte w następujących sytuacjach:

    Statyczna zmienna globalna
    Kiedy zmienna globalna jest deklarowana za pomocą statycznego słowa kluczowego, nazywa się ją statyczną zmienną globalną. Jest on zadeklarowany na górze programu i jest widoczny w całym programie.Funkcja statyczna
    Gdy funkcja jest zadeklarowana za pomocą statycznego słowa kluczowego, zwanego funkcją statyczną. Jego żywotność obejmuje cały program.Statyczna zmienna lokalna
    Kiedy zmienna lokalna jest deklarowana za pomocą statycznego słowa kluczowego, nazywa się ją statyczną zmienną lokalną. Pamięć statycznej zmiennej lokalnej obowiązuje w całym programie, jednak zakres widoczności zmiennej jest taki sam jak automatycznych zmiennych lokalnych. Jeśli jednak funkcja zmodyfikuje statyczną zmienną lokalną podczas pierwszego wywołania funkcji, wówczas ta zmodyfikowana wartość będzie dostępna również przy następnym wywołaniu funkcji.Statyczne zmienne składowe
    Kiedy zmienne składowe są zadeklarowane w klasie za pomocą statycznego słowa kluczowego, nazywa się to statycznymi zmiennymi składowymi. Dostęp do nich mogą uzyskać wszystkie instancje klasy, a nie konkretna instancja.Metoda statyczna
    Funkcja składowa klasy zadeklarowana za pomocą static słowa kluczowego jest nazywana metodą statyczną. Jest dostępny dla wszystkich instancji klasy, a nie dla konkretnej instancji.

Rozumiemy na przykładzie.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; } 

W powyższym kodzie wywoływana jest funkcja func(). W func() zmienna licznika jest aktualizowana. Po zakończeniu wykonywania funkcji pamięć zmiennej licznikowej zostanie usunięta. Jeśli nie chcemy usuwać licznika z pamięci, musimy użyć zmiennej licznika jako statycznej. Jeśli zadeklarujemy zmienną jako statyczną, to zmienna nie zostanie usunięta z pamięci nawet po zakończeniu wykonywania funkcji.

Wyjście

 1 1 

Zmienna statyczna

Zmienna statyczna to zmienna, która utrzymuje swoją wartość podczas różnych wywołań funkcji.

Składnia

Poniżej podano składnię zmiennej statycznej:

 static data_type variable_name; 

Spójrzmy na prosty przykład zmiennej statycznej.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { static int count=0; count++; return count; } 

W powyższym kodzie zadeklarowaliśmy zmienną count jako statyczną. Po wywołaniu funkcji func() wartość count zostaje zaktualizowana do 1, a podczas następnego wywołania funkcji wartość zmiennej count wynosi 2. Można zatem powiedzieć, że wartość zmiennej statycznej utrzymuje się w wywołaniu funkcji .

Wyjście

 1 2 

Funkcja statyczna

Ponieważ wiemy, że funkcje niestatyczne są domyślnie globalne, oznacza to, że dostęp do funkcji można uzyskać również poza plikiem, ale jeśli zadeklarujemy funkcję jako statyczną, ogranicza to zakres funkcji. Dostęp do funkcji statycznej można uzyskać wyłącznie w pliku.

Funkcja statyczna wyglądałaby następująco:

 static void func() { printf('Hello javaTpoint'); } 

Różnice między zmienną statyczną i globalną

Zmienne globalne to zmienne zadeklarowane poza funkcją. Te zmienne globalne istnieją na początku programu, a ich zakres pozostaje do końca programu. Dostęp do niego można uzyskać także poza programem.

Zmienne statyczne są ograniczone do pliku źródłowego, w którym są zdefiniowane, tj. nie są dostępne dla innych plików źródłowych.

Zarówno zmienne statyczne, jak i globalne mają inicjalizację statyczną. Tutaj inicjalizacja statyczna oznacza, że ​​jeśli nie przypiszemy żadnej wartości zmiennej, to domyślnie zmiennej zostanie przypisana wartość 0.

Różnice b/w statyczna zmienna lokalna i statyczna zmienna globalna

Statyczna zmienna globalna

Jeśli zmienna jest zadeklarowana ze statycznym słowem kluczowym poza funkcją, wówczas nazywa się ją statyczną zmienną globalną. Jest dostępny w całym programie.

Statyczna zmienna lokalna

Zmienna ze statycznym słowem kluczowym zadeklarowana wewnątrz funkcji jest nazywana statyczną zmienną lokalną. Zasięg statycznej zmiennej lokalnej będzie taki sam jak automatycznych zmiennych lokalnych, ale jej pamięć będzie dostępna przez cały czas wykonywania programu. Gdy funkcja zmodyfikuje wartość statycznej zmiennej lokalnej podczas jednego wywołania funkcji, to pozostanie ona taka sama nawet przy następnym wywołaniu funkcji.

Właściwości zmiennej statycznej

Poniżej przedstawiono właściwości zmiennej statycznej:

  • Pamięć zmiennej statycznej jest alokowana wewnątrz zmiennej statycznej.
  • Jej pamięć jest dostępna w całym programie, ale zakres pozostanie taki sam jak automatycznych zmiennych lokalnych. Jego
  • wartość będzie się utrzymywać w różnych wywołaniach funkcji.
  • Jeśli nie przypiszemy żadnej wartości zmiennej, wówczas wartością domyślną będzie 0.
  • Dostęp do globalnej zmiennej statycznej nie jest możliwy poza programem, natomiast dostęp do zmiennej globalnej można uzyskać z innych plików źródłowych.