- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
86 Глава 2
Вывод этого примера:
Описание полученных результатов
Первые два оператора объявляют и определяют две целочисленных переменных, countl и count3, с начальными значениями 10 и 50 соответственно. Обе эти пере- менные существуют, начиная с этой точки и до закрывающей скобки в конце про- граммы. Область видимости этих переменных также распространяется до закрываю- щей скобки в конце main ().
Помните, что время жизни и область видимости переменной — разные вещи. Важно не пу- тать эти два понятия. Время жизни — это период во время выполнения программы, начи- ная с момента первого объявления переменной до момента ее уничтожения и освобождения занятой ею памяти для другого использования. Область видимости переменной — это часть программного кода, в которой переменная доступна.
Вслед за определением переменной значение countl выводится на экран, что дает первую из строк, показанных выше. Далее идет новая открывающая фигурная скобка, с которой начинается новый блок. Две переменных, countl и count2, определены в этом блоке, со значениями 20 и 30 соответственно. Переменная countl, объявленная здесь, отличается от первой переменной countl. Первая countl все еще существу- ет, но ее имя замаскировано второй переменной countl. Любое упоминание имени countl после объявления внутри вложенного блока ссылается на countl, объявлен- ную в этом блоке.
Я использовал дублированное имя переменной count 1 здесь только для того, чтобы проиллю- стрировать, что произойдет. Хотя этот код совершенно легален, он не является примером правильного подхода к программированию. При разработке реальных программ это приве- дет к путанице, и если вы используете дублированные имена, то очень легко нечаянно скрыть переменные, определенные во внешней области видимости.
Значение во второй строке вывода демонстрирует, что внутри вложенного блока обращение к имени countl означает обращение к переменной, имеющей область ви- димости этого блока, то есть объявленной во внутренних фигурных скобках:
Данные,
переменные и вычисления
Если бы здесь использовалась внешняя переменная count 1, то было бы выведено ее значение — 10. Далее значение count 1 увеличивается следующим оператором:
Инкремент касается переменной, имеющей внутреннюю область видимости блока, поскольку внешняя все еще сокрыта. Однако count 3, которая была определена во внеш- ней области видимости, увеличивается в следующем операторе без всяких проблем:
Это доказывает, что переменные, объявленные в начале внешней области види- мости, доступны также и во вложенной области. (Обратите внимание, что если бы count3 была объявлена после закрывающей скобки вложенного блока, она бы также существовала во внешней области видимости, но в этом случае она бы еще не суще- ствовала во вложенном блоке.)
После закрывающей скобки вложенного блока count2 и внутренняя переменная countl прекращают существовать. Переменные countl и count3 по-прежнему нахо- дятся во внешней области видимости, и отображаемые значения доказывают, что зна- чение count3 было увеличено во вложенном блоке.
Если вы снимите комментарий со следующей строки:
то программа не станет корректно компилироваться, потому что попытается об- ратиться к несуществующей переменной. В этом случае вы получите сообщение об ошибке вроде следующего:
Это потому, что в этой точке count2 вышла из своей области видимости.
Размещение объявлений переменных
Вам предоставляется значительная свобода в том, где помещать объявления ваших переменных. Наиболее важный аспект, который следует при этом учитывать — это ка- кова должна быть область видимости этой переменной. Помимо этого, обычно сле- дует размещать объявление переменной поближе к тому месту, где она будет впервые использована в программе. Вы должны писать свои программы так, чтобы максималь- но облегчить их понимание другими программистами, и объявление переменной не- посредственно перед первым ее использованием весьма поможет в достижении этой цели.
Можно поместить объявление переменной вне любой функции, входящей в про- грамму. В следующем разделе будет рассказано о последствиях таких объявлений.
Глобальные переменные
Переменные, которые объявлены вне всех блоков и классов (о классах речь пой- дет позже), называются глобальными, и они имеют глобальную область видимости (которая также называется областью видимости глобального пространства имен или областью видимости файла). Это значит, что они доступны всем функциям в файле, начиная с точки, где они были объявлены. Если вы объявляете их в самом на- чале ваше программы, то они будут доступны в любом месте файла.