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) { /* ... */ }
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ą.
int number = 1;
int main() {
int number = 2;
{
int number = 3;
std::cout << number;
std::cout << ::number;
}
std::cout << number;
std::cout << ::number;
}
-
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)