Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern. |
Автор megabax | |||
07.05.2011 г. | |||
Microsoft visual c++ 2008. Урок 10. Область видимости переменных. Extern.В языке C++ где переменная объявлена, там и действует ее область видимости. Если одна и та же переменная объявлена в нескольких местах, то действует наиболее локальная область видимости. Тоесть, вы например, можете объявить переменную внутри функции и вне ее, при чем одну и ту же. В этом случае внутри функции действует объявленная там переменная и ее изменение никак не влияет на изменение объявленной во вне функции переменной. Прежде чем проиллюстрировать все это на примере, я расскажу еще об одном типе переменных extern - внешние. Этот модификатор указывает, что переменная, объявленная внутри функции является не локальной, а внешней. Теперь пример. И так, создадим новый проект, как вы это уже умеете, и добавим в него заголовочный файл les10.h. Для этого щелкаем на ветке "Заголовочные файлы" и в открывшемся меню выберем "Добавить" -> "Создать элемент". В открывшемся диалоге введем имя и выберем "Заголовочный файл (.h)": у нас откроется пустое пространство, куда мы введем всего лишь одну строку:
А в основной файл проекта введем вот такой текст:
Если мы запустим программу на исполнение, то вот что она выдаст: в чем же разница между extern и просто глобальной переменной? Прежде чем приступить к рассмотрению спецификатора extern, коротко остановлюсь на компоновке программы. В языке С++ при редактировании связей к переменной может применяться одно из трех связываний: внутреннее, внешнее или же не относящееся ни к одному из этих типов. (В последнем случае редактирование связей к ней не применяется.) В общем случае к именам функций и глобальных переменных применяется внешнее связывание. Это означает, что после компоновки они будут доступны во всех файлах, составляющих программу. К объектам, объявленным со спецификатором static и видимым на уровне файла, применяется внутреннее связывание, после компоновки они будут доступны только внутри файла, в котором они объявлены. К локальным переменным связывание не применяется и поэтому они доступны только внутри своих блоков. Спецификатор extern указывает на то, что к объекту применяется внешнее связывание, именно поэтому они будут доступны во всей программе. Далее нам понадобятся чрезвычайно важные понятия объявления и описания. Объявление (декларация) объявляет имя и тип объекта. Описание выделяет для объекта участок памяти, где он будет находиться. Один и тот же объект может быть объявлен неоднократно в разных местах, но описан он может быть только один раз. В большинстве случаев объявление переменной является в то же время и ее описанием. Однако, если перед именем переменной стоит спецификатор extern, то объявление переменной может и не быть ее описанием. Таким образом, если нужно сослаться на переменную, определенную в другой части программы, необходимо объявить ее как внешнюю (extern). Еще существуют переменные с модификатором static. Это локальные переменные, которые не теряют свое значения после выхода из функции. |
|||
Последнее обновление ( 21.09.2013 г. ) |
« След. | Пред. » |
---|