Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.3_Базовые_и_производные_типы.doc
Скачиваний:
6
Добавлен:
04.11.2018
Размер:
327.17 Кб
Скачать

Область действия идентификатора информационного объекта программы

Область действия идентификатора информационного объекта программы – часть программы, в которой этот идентификатор можно использовать для доступа к связанной с ним области памяти (т.е. часть программы, в которой на идентификатор можно ссылаться):

      • блок: область действия идентификатора начинается в точке определения и заканчивается в конце блока, содержащего это определение; внутри блока определена локальная переменная, размещаемая в сегменте стека в момент выполнения оператора определения;

      • функция: единственными идентификаторами, имеющими в качестве области действия функцию, являются метки операторов (вне функции они недоступны);

      • прототип функции: идентификаторы, указанные в списке формальных параметров в прототипе функции (и не являющиеся частью определения функции), имеют областью действия прототип функции;

      • файл: идентификаторы области действия типа файл объявляются вне всех функций, блоков и классов; их действие лежит между точкой объявления и концом исходного файла; файл считается областью действия глобальной переменной, размещаемой в сегменте данных; глобальная переменная изначально обнуляется; время ее жизни: с начала выполнения программы и до ее окончания; память под нее выделяется компилятором.

Идентификатор, объявленный вне любой функции, имеет областью действия файл (он «известен» всем функциям от точки его объявления до конца файла). Глобальные переменные, описания и прототипы функций, находящиеся вне функции - имеют областью действия файл.

Необходимо запомнить и уметь диагностировать ряд моментов:

  • Переменные доступны (т.е. имеют область действия и видимы) в том блоке программы, в котором они описаны.

  • Если переменная описана вне функций, она является глобальной и доступна (имеет область действия и видима) из любой части программы.

  • Внутри функции может быть введено сколько угодно блоков, и внутри каждого из них можно описывать локальные переменные, доступные (т.е. видимые и имеющие область действия) только внутри этого блока.

  • Если во вложенном блоке описана переменная с тем же именем, что и в охватывающем, внутри блока будет доступна (т.е. видима и имеет область действия) описанная в нем локальная переменная. В охватывающем блоке (до и после завершения вложенного блока), будет доступна (т.е. видима и имеет область действия) описанная в нем переменная (и ее значение). Во вложенном блоке эта переменная имеет область действия видима, но невидима (недоступна). Т.е. доступ к глобальной переменной может быть утрачен при объявлении одноименной локальной переменной.

  • Для доступа (изменения области видимости) к одноименной глобальной переменной из блока, где описана одноименная локальная переменная, следует использовать операцию разрешения области видимости :: .