КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сокрытие имен
Локальные переменные могут быть объявлены в любом блоке
Чаще всего все переменные, которые будут нужны в некоторой функции, объявляются в начале ее функционального блока. Так поступают главным образом для того, чтобы тот, кто будет читать этот код, мог легко определить, какие переменные будут в нем использоваться. Однако начало функционального блока не является единственным местом, где можно объявлять локальные переменные. Локальную переменную можно объявить где угодно, в любом блоке кода. Переменная, объявленная внутри блока, локальна по отношению к этому блоку. Это означает, что переменная не существует, пока не начал выполняться этот блок, и уничтожается вместе с завершением блока. Никакие предложения вне этого блока — включая остальные строки той же функции - не могут обратиться к этой переменной. Для того, чтобы усвоить это ограничение, рассмотрим следующую программу:
// Переменные могут быть локальными по отношению к блоку.
#include <iostream> using namespace std;
int main () { int x = 19; // x известна всюду, if(x == 19) { int y = 20; // у локальна по отношению к блоку if. cout << "х + у равно " << x + y << "\n"; } // у = 100; // Ошибка! у здесь неизвестна, return 0; }
Переменная х объявлена в начале области видимости main() и доступна всему последующему коду, входящему в main(). Внутри блока if объявляется переменная у. Поскольку блок определяет область видимости, у видима только для остального кода внутри своего блока. Поэтому вне этого блока предложение
у = 100;
закомментировано. Если вы удалите ведущие символы комментария, при компиляции будет зафиксирована ошибка, поскольку у не видна вне ее блока. Внутри блока if можно использовать х, потому что код внутри блока имеет доступ к переменным, объявленным во внешнем блоке, содержащем в себе данный. Хотя локальные переменные обычно объявляются в начале их блока, это не обязательно. Локальная переменная может быть объявлена в любом месте внутри блока, но, разумеется, перед тем, как она будет использоваться. Например, следующая программа вполне правильна: #include <iostream> using namespace std;
int main() { cout << "Введите число: "; int a; // объявим одну переменную cin >> a;
cout << "Введите второе число:"; int b; // объявим другую переменную cin >> b;
cout << "Произведение: " << a*b << '\n';
return 0; }
В этом примере а и b не объявляются до тех пор, пока в них не возникает необходимость. Честно говоря, большинство программистов объявляют локальные переменные в начале использующей их функции, но это вопрос вкуса.
Если локальная переменная, объявленная во внутреннем блоке, имеет то же имя, что и переменная, объявленная во внешнем блоке, то переменная, объявленная во внутреннем блоке, скрывает переменную из внешнего блока. Например:
#include <iostream> using namespace std;
int main() { int i; int j; i = 10; j = 100;
if (j > 0) { int i; // эта i отличается от внешней i i = j / 2; cout << "внутренняя i: " << i << '\n'; } cout << "внешняя i: " << i << '\n'; return 0; }
Вывод этой программы:
внутренняя i: 5 0 внешняя i: 10
Переменная i, объявленная внутри блока if, скрывает внешнюю переменную i. Изменение значения внутренней i не оказывает влияния на внешнюю i. Более того, вне блока if внутренняя i неизвестна, и снова становится видимой внешняя i.
Дата добавления: 2014-01-06; Просмотров: 295; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |