Локальные переменные

Локальные переменные — это переменные созданные в блоках. Областью видимости таких переменных является блоки ( и все их дочерние ), а также их область видимости не распространяется на другие блоки. Как ни как, но эти переменные созданы в отдельных блоках.

Из этого можно сделать вывод: у нас есть возможность создавать переменные с одинаковыми именами, но в разных блоках (или другими словами, чтобы их область видимости не совпадала друг с другом).

 

1 2 3 4 5 6 7 8 int main() { for (int i = 0; i < 2; i++) { int b = i; // локальная переменная (она находится в блоке for) cout << b; } system("pause"); return 0; }

 

В примере выше блоком где была создана локальная переменная b является цикл for (2 — 5). А вот если бы мы захотели вывести переменную b вне блока for, компилятор сообщил бы нам об ошибке, подробнее об этом говорится ниже.

Распространенной ошибкой среди начинающих программистов является использование локальных переменных в других блоках. Например ниже мы решили использовать переменную cost в функции summa, хотя мы ее создали в совершенно другой функции — main.

 

1 2 3 4 5 6 7 8 9 10 11 12 13 int summa () { cout << cost; // ошибка }   int main() {   int cost = 10; // переменная созданная в блоке main   summa();   system("pause"); return 0; }

 

Нужно запомнить! Если вы создали локальную переменную, то вы должны понимать, что использование ее в других блоках будет невозможным.

Глобальная переменная уступает локальной

Если мы создадим глобальную переменную и с таким же именем локальную, то получится, что там где была создана локальная переменная будет использоваться именно локальная переменная, а не глобальная. Так как локальная переменная считается по приоритету выше глобальной. Давайте разберем, как это работает на примере ниже:

 

1 2 3 4 5 6 7 8 9 string str = "You lucky!";   void message() { string str = "You very lucky man!"; cout << str; } void sait_message() { cout << str; }

 

Мы создали глобальную переменную str со значением «You lucky!» и локальную переменную с таким же названием в функции message, но с другим значением — «You very lucky man!». Если мы вызовем функцию message, то результатом будет:

 

message.cpp

You very lucky man!

Process returned 0 (0x0) execution time : 0.010 s

Press any key to continue.

 

 

А вот, если мы вызовем функцию sait_message то результатом будет:

 

sait_message.cpp

You lucky!

Process returned 0 (0x0) execution time : 0.010 s

Press any key to continue.

 

Вот так глобальная переменная уступает локальной!

Мы советуем вам не создавать переменные с одинаковыми именами, поскольку в будущем вам будет тяжело разобраться в коде, если там будут присутствовать одинаковые переменные.