Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си++ Занятие 7.doc
Скачиваний:
2
Добавлен:
17.11.2019
Размер:
59.39 Кб
Скачать

5

Занятие 7 Время жизни и область видимости переменной. Функции.

1. Время жизни и область видимости переменной

1.1 Общие понятия

При определении переменной компилятор выделяет для нее память, причем тип данных определяет размер выделенной области.

После того, как переменная создана, в ней можно размещать данные, но всегда ли к этим данным можно обратиться, или, как говорят, всегда ли эти данные доступны? Чтобы ответить на этот вопрос, необходимо рассмотреть несколько новых понятий.

Программным блоком будем называть часть программы, заключенную в {}. Программируя на С, мы всегда имеем дело с программными блоками, например, тело функции main(), тело цикла, одна из альтернатив оператора if – все это программные блоки.

Различают два вида блоков:

1) составной оператор,

2) определение функции.

Блоки могут быть вложенные, внутренний блок называется вложенным, а внешний блок – объемлющим. При использовании вложенных блоков следует соблюдать следующие правила:

  • Блоки могут включать в себя составные операторы,

  • Блоки не могут включать в себя определения функций.

Программный модуль – это файл с исходным текстом программы.

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

Переменная с глобальным временем жизни существует, т.е. имеет распределенную для нее память и определенное значение, на протяжении всего времени выполнения программы.

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

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

Объект может быть видимым в пределах:

  • Блока,

  • Модуля (файла),

  • Во всех модулях (если программа располагается в нескольких файлах).

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

Внутри блока или функции объявляются локальные переменные, они видимы в том блоке, в котором объявлены, и во всех вложенных, если таковые есть.

В следующем примере переменная q существует на протяжении всего времени выполнения программы, она видима во всех блоках программы.

Переменная i существует на протяжении выполнения функции main(), она видима внутри функции main(), т.е. в текущем модуле программы.

Переменные k и l существуют на протяжении выполнения вложенного блока, они создаются при входе во вложенный блок и уничтожаются при выходе из него. Переменная i видна как в своем блоке (в функции main()), так и во вложенном блоке, переменные k и l не видны вне "своего" блока (там их просто не существует).

Пример 1.

int q; // глобальная переменная

void main()

{ // функция main(), объемлющий блок

int i; //локальная переменная функции main()

{ // вложенный блок

int k, l; //локальные переменные вложенного блока

}

k++; //ошибка, переменной k здесь не существует

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]