Zmienne lokalne i zmienne globalne - wprowadzenie
Powiedzieliśmy już, że zmienne to nazwane komórki pamięci. Należy rozróżnić dwa aspekty związane ze zmiennymi:
- czas życia zmiennej - jest to czas, w którym komórki pamięci są zarezerwowane dla tej zmiennej i nie zostaną przydzielone innej zmiennej
- zakres ważności zmiennej - jest to zbiór tych instrukcji programu, w których zmienna jest dostępna za pomocą identyfikatora.
Na ogół czas życia zmiennej nie pokrywa się z czasem wykonywania instrukcji, w których zmienna jest widoczna (dostępna za pomocą identyfikatora). Szczegóły przedstawimy w dalszej części kursu. Teraz odnotujemy tylko dwie podstawowe sytuacje:
- zmienna może być zadeklarowana globalnie, czyli poza wszystkimi blokami programu
- zmienna może być zadeklarowana lokalnie, czyli wewnątrz jakiegoś bloku programu
Podkreślamy, że powyższa lista nie jest kompletna - szczegóły będą w dalszej części kursu.
int z; // zmienna globalna, inicjalizowana zerem
int main()
{
int k; // zmienna lokalna, może mieć losową wartość
}
- zmienne globalne są inicjalizowane domyślnymi wartościami typu jeszcze przed rozpoczęciem wykonywania programu. W szczególności zmienne globalne typu liczbowego będą zainicjalizowane zerem.
- zmienne lokalne nie są inicjalizowane! Oznacza to, że mogą mieć zupełnie losową wartość, zależną od tego, co pozostało w pamięci po poprzednio wykonywanych instrukcjach (możliwe, że innego programu)