Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Информатика.doc
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
143.36 Кб
Скачать

3 Оператор описания объекта

Вспомним вид оператора описания объекта (переменной):

класс_памяти тип_данных имя_объекта;

где класс памяти и тип данного может быть опущен.

Далее рассмотрим более детально классы памяти в рамках языка СИ.

3.1 Классы памяти

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

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

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

Так вот эти да свойства определяет класс памяти, который поставлен в соответствие введенному в программе объекту.

Блок – все, что ограничено фигурными скобками.

Существует 4 разновидности классов:

auto – автоматически выделяемая, локальная память. Для имен с таким классом памяти выделяется память при входе в блок и освобождается при выходе из него. Всем объектам, которые описываются внутри блока присваивается класс памяти auto по умолчанию.

Пример:

main()

{

{

auto int a,b;

a=3;

}

{ float a; a=3.1;}

}

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

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

Пример:

int a;

main()

{

{

auto int c,b;

a=3;

}

{ float c; a=3.1;}

}

externобъект данного класса глобален, т.е. доступен во всех файлах программы. Данный класс может быть приписан и переменной и функции. Блок памяти, ассоциированный с данным именем, занят им до конца исполнения программы.

Пример:

Таким образом, если говорить о времени жизни объекта выделяют: статическое, локальное и динамическое.

Статическое – память для объекта выделяется в начале программы и сохраняется до конца ее исполнения.

Локальное - память для объекта выделяется при каждом входе в блок, где этот объект описан, и освобождается от этого объекта, когда осуществляется выход из этого блока.

Динамическое – память под объекты выделяется и освобождается явно при помощи специальных операторов в процессе выполнения программы.

С понятием область действия связано понятие видимость объекта, которая связано с возможностью повторных определений объектов внутри вложенных блоков (использование одних и тех же имен). На примере объяснить.