Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 279; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.