Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОАиП.docx
Скачиваний:
137
Добавлен:
09.03.2016
Размер:
139.71 Кб
Скачать

30.Время существования и область видимости переменных (auto, static, extern, register).

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

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

Область видимости имени начинается в точке объявления, точнее, сразу после объявителя, но перед инициализатором. Поэтому допускается использование имени в качестве инициализирующего значения для себя самого.

Объявления переменных в языке C++ имеют следующий синтаксис: [<спецификация класса памяти>] <тип> <описатель> [= <инициализатор>] [, <описатель> [= <инициализатор>] ...];

В языке C++ имеется четыре спецификации класса памяти:

  • auto

  • register

  • static

  • extern

Спецификации класса памяти auto и register могут быть использованы только на внутреннем уровне.

Переменная, объявленная на внешнем уровне, имеет глобальное время жизни. При отсутствии инициализатора такая переменная инициализируется нулевым значением. Область видимости переменной, определенной на внешнем уровне, распространяется от точки, где она определена, до конца исходного файла. Переменная недоступна выше своего определения в том же самом исходном файле. На другие исходные файлы программы область видимости переменной может быть распространена только в том случае, если ее определение не содержит спецификации класса памяти static.

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

Спецификация класса памяти extern используется для объявления переменной, определенной где-то в другом месте программы. Такие объявления используются в случае, когда нужно распространить на данный исходный файл область видимости переменной, определенной в другом исходном файле на внешнем уровне

31.Создание исполняемого файла.

Исполни́мый (исполня́емый) мо́дуль, исполняемый файл — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).

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

  • заголовки;

  • инструкции (код);

  • другое.

В заголовках могут указываться:

  • предполагаемые исполнители инструкций;

  • параметры (настройки) исполнителя инструкций и окружения;

  • формат инструкций (кода).

Исполнитель инструкций — это некий аппаратно-программный или программный комплекс, способный исполнить инструкции (код). Примеры исполнителей:

  • аппаратные реализации:

    • процессоры (например, процессоры семейств x86, SPARC);

    • микроконтроллеры (например, микроконтроллеры семействAVR, PIC);

    • интерпретаторы (например, Jazelle, PicoJava);

  • программные реализации:

    • интерпретаторы (например, shell, CPython, Perl, PHP, JavaScript,Ruby);

    • виртуальные машины 

Инструкции (код) — это:

  • либо машинные инструкции[2], составленные из числа доступных исполнителю команд;

  • либо исходный код (сценарий, скрипт, псевдокод), записанный на одном из интерпретируемых языков программирования;

  • либо байт-код виртуальной машины.

Для уменьшения размера исполняемые файлы или их части могут сжиматься