Продолжительность существования объекта (время жизни)
Продолжительность существования объекта (время жизни) -это интервал времени выполнения программы, в течение которого программный объект (переменная или функция) существует.
Существует три разновидности продолжительности существования:
– статическая, объект существует в течение всего времени выполнения программы;
– локальная, объект существует в пределах выполнения операторов блока;
– динамическая, объект создается и удаляется явным образом с помощью специальных функций (или операторов в Си++).
–
2.2.5. Тип компоновки (связывания)
Тип компоновки (связывания)определяет соответствие идентификатора конкретному объекту в программе, исходный текст которой размещен в нескольких файлах, т.е. можно ли идентификатор использовать в нескольких файлах проекта или его можно использовать только в одном файле.
Два вида связывания:
• внутреннее, к объекту можно обращаться только в одном файле (модуле) проекта;
• внешнее, к объекту можно обращаться из различных файлов (модулей) проекта, при этом переменная в одном файле должна быть определена, а в других файлах описана с модификатором extern.
Взаимосвязь классов памяти и других атрибутов объектов представлена в таблице 2.
Таблица 2 – Взаимосвязь атрибутов объектов
Класс памяти
Атрибуты объектов
Область действия
Область видимости
Продолжительность существования
Тип связывания
auto
От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор
От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор
Локальная
Внутреннее связывание
register
static
От точки описания до конца файла (блока)
От точки описания до конца блока за исключением внутренних блоков, если в них повторно используется идентификатор
Статическая
extern
Внешне связывание
Существуют различные термины в языке Си, такие как, объявления, определения и описания. В литературе присутствует некоторая терминологическая путаница между этими понятиями, связанная, в том числе, и с переводом английских терминов, частично являющимися синонимами, на русский язык.
Для однозначной интерпретации данных терминов будем понимать их следующим образов.
Объявлениеобъекта (переменной) - это оператор, позволяющий устанавливать атрибуты объекта, резервировать для него память, связывать объект с идентификатором (именем) или делать известным компилятору идентификатор объекта.
Прежде чем использовать объект в программе, он должен быть объявлен. Объявления делятся на два класса: определения и описания.
Определение –это разновидность объявления, которое устанавливает атрибуты объекта (переменной), резервирует для него память и связывает объект с идентификатором (именем).
Описание –эторазновидность объявления, которое делает известным компилятору идентификатор объекта.
Определять объект можно только один раз, описывать множество раз. Рассмотрим отличительные признаки определений от описания применительно для переменных.
Признаки определения переменных:
– объявлена переменная без модификатора extern;
– объявлена переменная с инициализатором.
Признаки описания переменных:
– наличие модификатора extern (инициализация запрещена).