W tej lekcji dowiesz się, czym jest zakres (ang. scope) w języku C++. Zakres to część programu, w której zmienna jest dostępna. Kiedy deklarujesz zmienną w C++, jej dostępność jest ograniczona do pewnego fragmentu kodu – nazywamy go właśnie zakresem. Zakres jest ważnym pojęciem, ponieważ pomaga kontrolować, gdzie zmienne mogą być używane i jak długo są przechowywane w pamięci.
W C++ istnieją dwa podstawowe typy zakresu:
- Zakres globalny: Zmienna zadeklarowana poza jakąkolwiek funkcją jest dostępna dla całego programu.
- Zakres lokalny: Zmienna zadeklarowana wewnątrz funkcji lub bloku kodu (np. w pętli lub instrukcji warunkowej) jest dostępna tylko w tym fragmencie kodu.
W poniższym przykładzie zobaczymy, jak działa zakres w praktyce.
Przykład kodu – Zakres w C++
Stwórz plik o nazwie scope_example.cpp
i wklej poniższy kod:
#include <iostream>
// Zmienna globalna - dostępna dla całego programu
int globalVar = 10;
// Funkcja, która wyświetla wartość zmiennej lokalnej i globalnej
void displayValues() {
// Zmienna lokalna - dostępna tylko wewnątrz tej funkcji
int localVar = 20;
std::cout << "Wartość zmiennej lokalnej: " << localVar << std::endl;
std::cout << "Wartość zmiennej globalnej: " << globalVar << std::endl;
}
int main() {
// Zmienna lokalna - dostępna tylko wewnątrz funkcji main
int localVar = 5;
// Wyświetlanie wartości zmiennej lokalnej w funkcji main
std::cout << "Wartość zmiennej lokalnej w main: " << localVar << std::endl;
// Wywołanie funkcji displayValues
displayValues();
// Modyfikacja zmiennej globalnej
globalVar = 15;
std::cout << "Zmieniona wartość zmiennej globalnej w main: " << globalVar << std::endl;
// Próba użycia zmiennej lokalnej z funkcji displayValues (nie zadziała)
// std::cout << "Zmienna lokalna z displayValues: " << localVar << std::endl; // Błąd kompilacji
return 0;
}
Wyjaśnienie
W powyższym programie najpierw definiujemy zmienną globalną globalVar
, która jest dostępna dla wszystkich funkcji w programie. Następnie mamy funkcję displayValues
, w której deklarujemy zmienną lokalną localVar
. Jest ona dostępna tylko w obrębie tej funkcji, a jej wartość jest wyświetlana na ekranie.
W funkcji main
deklarujemy swoją zmienną lokalną o nazwie localVar
, której zakres jest ograniczony tylko do funkcji main
. Co ciekawe, możemy mieć zmienne o tej samej nazwie w różnych zakresach (np. localVar
w main
i w displayValues
). Są to różne zmienne, które nie mają wpływu na siebie nawzajem.
W funkcji main
wywołujemy funkcję displayValues
, która wyświetla wartości zmiennych lokalnej i globalnej. Następnie zmieniamy wartość zmiennej globalnej i wyświetlamy jej nową wartość. Na koniec próbujemy wyświetlić zmienną lokalną z funkcji displayValues
, ale to spowoduje błąd, ponieważ ta zmienna nie jest dostępna poza tą funkcją.
Podsumowanie
W tym programie nauczyłeś się, jak działa zakres zmiennych w C++. Widzisz, że zmienne globalne są dostępne dla całego programu, podczas gdy zmienne lokalne są dostępne tylko w obrębie funkcji, w których zostały zadeklarowane. Próba użycia zmiennej poza jej zakresem skutkuje błędem kompilacji. Dzięki zrozumieniu zakresu zmiennych możesz lepiej kontrolować ich użycie i zapobiegać błędom w kodzie.