Czym jest zakres w C++

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:

  1. Zakres globalny: Zmienna zadeklarowana poza jakąkolwiek funkcją jest dostępna dla całego programu.
  2. 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.

 

Scroll to Top