Skip to content

Latest commit

 

History

History
87 lines (63 loc) · 2.31 KB

04-scopes.md

File metadata and controls

87 lines (63 loc) · 2.31 KB

Podstawy C++

Zasięg zmiennych

Coders School

Zmienne lokalne

Zmienne lokalne są to zmienne, które są widziane w obrębię jakiegoś zakresu.

{
    int local_variable = 5;
    // ...
}
local_variable = 10;   // error -> local_variable doesn't exists

Zakres zawsze tworzą nawiasy klamrowe m.in:

  • same nawiasy - { /* ... */ }
  • ciała funkcji - void fun() { /* ... */ }
  • instrukcje warunkowe - if (condition) { /* ... */ }
  • pętle - while (condition) { /* ... */ }

Zmienne globalne

Zmienna globalna, jest widoczna dla wszystkich zakresów. Zawsze możemy się do niej odwołać.

int global_value = 5;

void foo() {
    std::cout << global_value;
}

int main() {
    std::cout << global_value;
}

Tworzenie zmiennych globalnych zazwyczaj jest złą praktyką.


Co wypisze się na ekranie?

int number = 1;

int main() {
    int number = 2;
    {
        int number = 3;
        std::cout << number;
        std::cout << ::number;
    }
    std::cout << number;
    std::cout << ::number;
}

3121


Przesłanianie nazw

  • możemy mieć wiele zmiennych o takiej samej nazwie, jeśli będą w różnych zakresach
    • aby unikać niejednoznaczności nie jest to raczej polecane
  • nazwa z lokalnego zakresu zawsze przesłania tę z szerszego zakresu (np. globalnego)
  • można odwoływać się do nazw z globalnego zakresu stosując :: (operator zakresu)