Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_lect.doc
Скачиваний:
30
Добавлен:
12.11.2018
Размер:
856.06 Кб
Скачать

2.2. Атрибуты объектов

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

Кроме типов для объектов или переменных явно или по умолчанию определяются следующие атрибуты:

  • класс памяти;

  • область (сфера) действия, связанного с объектом идентификатора (имени);

  • область видимости объекта;

  • продолжительность существования объекта;

  • тип компоновки (связывания).

2.2.1. Класс памяти

Класс памяти - свойство объекта размещенного в памяти (переменной), которое определяет продолжительность существования объекта (время жизни), тип компоновки (связывания) и другие атрибуты.

Для явного задания классов памяти используются следующие модификаторы:

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

Блок – это последовательность объявлений, определений и операторов, заключенных в фигурные скобки {…}. Выделяют два типа блоков: составной оператор и тело функции.

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

  2. static – «статическая» память, внутренний тип компоновки, т.е. переменная доступна только в одном файле проекта, где она определена и статическая продолжительность существования, т.е. переменная существует в течение всего времени выполнения программы. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной.

  3. extern – «внешняя» память, внешний тип компоновки, т.е. переменная доступна во многих файлах проекта, и статическая продолжительность существования.

Если класс памяти явно не определен, то для переменных, определенных вне блоков класс памяти – extern, а для определенных внутри блоков – auto.

2.2.2. Область (сфера) действия, связанного с объектом идентификатора

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

Область действия идентификатора определяется следующим образом:

  1. Если идентификатор объявлен в блоке: область действия от точки объявления до конца блока. Если блок – тело функции, то в нем определены и указанные в заголовке формальные параметры функции. Из области действия могут исключаться внутренние блоки, если в них данный идентификатор используется повторно.

  2. Если идентификатор объявлен вне блока: область действия от точки объявления до конца файла.

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