Область видимости переменных в C++
Область видимости переменных — это те части программы, в которой пользователь может изменять или использовать переменные в своих нуждах.
В C++ существуют отдельные блоки, которые начинаются с открывающей скобки ({) и заканчиваются соответственно закрывающей скобкой (}). Такими блоками являются циклы (for, while, do while) и функции.
int func () { // блок (функция - func) } int main() { // блок (функция - main) for (int i = 0; i < 10; i++) { // блок (цикл - for), также является дочерним блоком функции main for (int j = 0; j < 5; j++) { // блок (цикл - for), но он еще является и дочерним блоком для первого цикла } } system("pause"); return 0; } |
Если переменная была создана в таком блоке, то ее областью видимости будет являться этот блок от его начала (от открывающей скобки — { ) и до его конца (до закрывающей скобки — } ) включая все дочерние блоки созданные в этом блоке.
В примере ниже, программист ошибся с областью видимости:
· Он создал переменную j во втором цикле.
· Использовав ее в первом цикле for он вынудил компилятор сообщить об ошибке (переменной j больше нет, поскольку второй цикл закончил свою работу).
1 2 3 4 5 6 7 8 9 10 11 12 13 | int main() { for (int i = 0; i < 10; i++) { int b = i; for (int j = 0; j < 5; j++) { cout << b + j; } cout << j; // ошибка: так как переменная j была создана в другом блоке } system("pause"); return 0; } |
А вот ошибки в строке 6 нет, поскольку второй цикл находится в первом цикле (является дочерним блоком первого цикла) и поэтому переменная b может спокойно там использоваться.
Глобальные переменные в C++
Глобальными переменными называются те переменные, которые были созданы вне тела какого-то блока. Их можно всегда использовать во всей вашей программе, вплоть до ее окончания работы. В примере ниже мы создали две глобальные переменные global и global_too и использовали их в функции summa:
1 2 3 4 5 6 7 8 9 10 11 12 13 | int global = 5; // глобальные int global_too = 10; // переменные int summa() { cout << global + global_too; // суммируем числа } int main() { summa(); // вызываем функцию summa system("pause"); return 0; } |
Вот, что выведет данная программа:
area_sea.cpp
15
Process returned 0 (0x0) execution time : 0.010 s
Press any key to continue.
Как видите глобальные переменные видны везде. В нашем примере внутри функции summa мы не создавали ни какие переменные, мы лишь использовали две глобальные переменные, которые были созданы раньше.