Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 44

Первое, что вы могли заметить — это четырехкратное объявление пере­менной х. Она объявлена в строке 4 вне функции main(), в строке 8 внутри main(), в строке 13 внутри цикла while и в функции CountLoops() (строка 28). Если вы случайно объявляете переменную более одного раза, компилятор выдает сообщение об ошибке Multiple declaration for 'х' (Многократное объ­явление 'х') и компиляция прекращается. Тем не менее эта программа ком­пилируется и запускается вполне нормально. Почему? Дело в том, что пере­менные х из листинга 2.3 имеют различные области видимости.

Посмотрите внимательнее на листинг 2.3. Переменная х в строке 13 объявлена внутри тела цикла while и является локальной по отношению к этому блоку кода. В результате она не существует вне цикла. Аналогично этому переменная х, объявленная в строке 28, локальна по отношению к функции CountLoops() и не существует вне этой функции. В данном случае объявление х менее очевидно, т.к. оно содержится в списке параметров функ­ции, но тем не менее это именно объявление переменной.

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

Теперь обратите внимание на переменные х и i, объявленные внутри функции main(). Эти переменные локальны по отношению к тому блоку, в пределах которого объявлены, а также доступны из любого внутреннего блока. Другими словами, областью видимости переменных х и i является как функция main(), так и цикл while. Это достаточно легко понять в случае переменной i, поскольку она объявлена один раз. Но как быть с х? Ведь внутри цикла while существуют две переменные с именем х (одна из них объявлена в main(), а другая — в самом цикле), и обе находятся в области видимости. Которая из них будет использована? Та, которая объявлена в цикле while, потому что она имеет меньшую область видимости.

Web-дизайн (с) 2010 All rights reserved