Witam
Zmienna globalna - jest to zmienna której deklaracja znajduję się powyżej funkcji main() (Musi być przed nią, bo przecież funkcja będzie z niej coś czytać). Gdy nie zinicjalizujesz zmiennej globalnej, automatycznie ma ona wartość 0 - w przeciwieństwie do zmiennej lokalnej (wewnątrz jakiejś funkcji, nie koniecznie main(), która zawierać będzie śmieci - jakieś losowe liczby). Przydomek static sprawia, iż zmienna jest umieszczana w tej samej pamięci co zmienna globalna (naturalnie przez to zachowuje się jak zmienna globalna, jeśli jest już w zasięgu globalnym to tylko przypisuje mi wartość 0). Przydomek extern zaś, "mówi" kompilatorowi żeby nie szukał tej zmiennej globalnej w tym pliku - bo jest ona gdzieś indziej (inna klasa,plik nagłówkowy itp.). Const przed jakąś zmienną znaczy po prostu tyle, iż przez cały moment działania programu ta zmienna ma taką wartość i nie można jej zmienić. (Np. Liczba PI - zawsze 3.14). Taką zmienną trzeba zinicjalizować, ponieważ później nie idzie do niej przypisać wartości.