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