Jaka jest różnica między lokalnymi zmiennymi statycznymi a globalnymi zmiennymi statycznymi?


Najlepsza odpowiedź

global & local: jest związane z zakresem, tj. gdzie może być użyte

statyczne: jest związane z czasem i zmiennością, tj. jak długo może być używane

zmienna statyczna w programie C i C ++ jest definiowana (alokowana pamięć i wartość początkowa zero) tylko raz, nawet ponownie wykonuje deklarację deklaracji kontroli programu. Wartość i żywotność zmiennej statycznej jest zachowywana do końca programu, ale można jej używać wewnątrz zakresu.

void staticTest(){

static int i;

printf("\%d\n",i);

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Wynik:

0

1

2

W powyższym przykładzie pokazano użycie lokalnej zmiennej statycznej.

global static: możesz zadeklarować zmienną statyczną w zakresie globalnym, również będzie ona prawie taka sama jak inne zmienne globalne z wyjątkiem tego, że ma wartość początkową równą zero, jeśli nie przypiszesz jej żadnej wartości.

Odpowiedź

Lokalne statyczne:

  • Wartość domyślna to zero
  • Przechowywane w sekcji danych (bss lub zainicjowana) pamięci
  • Zakres lub widoczność znajduje się w bloku lub funkcji
  • Życie lokalnej zmiennej statycznej zaczyna się i kończy dopiero wraz z programem.

Global static:

  • Jeśli zmienna globalna jest statyczna, zakres lub widoczność obejmuje tylko ten plik, nawet użycie extern w innym pliku nie zadziała . Daje to błąd powiązania.

Przykład 1:

static int a=20;

void xyz()

{

printf("\%d, ", a);

a = 100;

}

int main()

{

printf("\%d, ", a);

{

static int a = 10;

printf("\%d, \n", a);

xyz();

}

printf("\%d", a);

}

// Output is 20, 10, 20, 100

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *