2019-04-08, 1:27 PM | |
Как мы уже знаем из предыдущих уроков, при выполнении процессором стейтмента int х; создаётся переменная. Возникает вопрос: «Когда эта переменная уничтожается?». Область видимости переменной определяет, кто может видеть и использовать переменную во время её существования. И параметры функции, и переменные, которые объявлены внутри функции, имеют локальную область видимости. Другими словами, эти переменные используются только внутри функции, в которой они объявлены. Локальные переменные создаются в точке объявления и уничтожаются, когда выходят из области видимости. Рассмотрим следующую программу: 1 #include <iostream> 2 3 int add(int a, int b) // здесь создаются переменные a и b 8 9 int main() Параметры a и b функции add() создаются при вызове этой функции, используются только внутри неё и уничтожаются при завершении выполнения этой функции. Переменные x и y функции main() можно использовать только внутри main() и они также уничтожаются при завершении выполнения функции main(). Для лучшего понимания разберём детальнее ход выполнения этой программы:
Всё! Обратите внимание, если бы функция add() вызывалась дважды, параметры a и b создавались и уничтожались бы также дважды. В программе с большим количеством функций, переменные создаются и уничтожаются часто. Локальная область видимости предотвращает возникновение конфликтов имён Теперь давайте рассмотрим следующую программу: 1 #include <iostream> 2 3 int add(int a, int b) // здесь создаются переменные a и b функции add() 7 8 int main() Здесь мы изменили имена переменных x и y функции main() на a и b. Программа по-прежнему работает корректно, несмотря на то, что функция add() также имеет переменные a и b. Почему это не вызывает конфликт имён? Дело в том, что a и b функции main() являются локальными переменными, функция add() не может их видеть (и наоборот). Ни add(), ни main() не знают, что они имеют переменные с одинаковыми именами! Это значительно снижает возможность возникновения конфликта имён. Любая функция не должна знать или заботиться о том, какие переменные находятся в другой функции. Это также предотвращает возникновение ситуаций, когда одни функции могут непреднамеренно (или намеренно) изменять значения переменных других функций. Правило: Имена, которые используются внутри функции (включая параметры), доступны/видны только внутри этой же функции. ТестКакой результат выполнения следующей программы? 1 #include <iostream> | |
| |
Просмотров: 267 | Загрузок: 0 | |
Всего комментариев: 0 | |