Язык программирования Си для персонального компьютера
Шрифт:
Второе объявление объявляет три указателя на far значения типа char с именами nextchar, prevchar и currentchar. Эти указатели могут быть, в частности, использованы для хранения адресов элементов массива initlist. Обратите внимание на то, что специальное ключевое слово far должно быть повторено перед каждым описателем.
Модификатор interrupt
Модификатор interrupt предназначен для объявления функций, работающих с векторами прерываний процессора 8086/8088. Для функции типа interrupt
См. пример в разделе 3.3.3.1.
Функции прерываний следует объявлять с типом возвращаемого значения void.
Функции прерываний поддерживаются для всех моделей памяти. В СП MSC, в малой и средней модели в регистр DS заносится при входе в функцию адрес сегмента данных всей программы, а в компактной, большой и максимальной модели в регистр DS заносится адрес сегмента данных программного модуля. В СП ТС только в максимальной модели в регистр DS заносится адрес сегмента данных программного модуля, а в остальных моделях—адрес сегмента данных всей программы.
Модификатор interrupt не может использоваться совместно с модификаторами near, far, huge.
Объявление переменных
В этом разделе дано последовательное описание синтаксиса и семантики объявлений переменных. Разновидности переменных перечислены в следующей таблице:
Таблица 3.4.
Вид переменной | Пояснение |
Простая переменная | Скалярная переменная целого или плавающего типа |
Переменная перечислимого типа | Простая переменная целого типа, принимающая значения из предопределенного набора именованных значений |
Структура | Переменная, содержащая совокупность элементов, которые могут иметь различные типы |
Объединение | Переменная, содержащая совокупность элементов, которые могут иметь различные типы, но занимают одну и ту же область памяти |
Массив | Переменная, содержащая совокупность элементов одинакового типа |
Указатель | Переменная, которая указывает на другую переменную (содержит ее адрес) |
Общая синтаксическая форма объявления переменных описана в начале раздела 3. В данном разделе для простоты изложения объявления описываются без спецификаций класса памяти и инициализаторов. Спецификации класса памяти описаны в разделе 3.6, инициализаторы — в разделе 3.7.
В объявлении простой переменной, массива и указателя спецификация типа может быть опущена. Если это объявление записано на внешнем уровне, то спецификация класса памяти тоже может быть опущена. В объявлении внутреннего уровня хотя бы одна из спецификаций — класса памяти или типа — должна присутствовать.
Объявление простой переменной
Синтаксис:
<спецификация типа> <идентификатор> [,<идентификатор>…];
Объявление
Можно объявить несколько переменных в одном объявлении, задавая список <идентификаторов>, разделенных запятыми. Каждый <идентификатор> в списке именует отдельную переменную. Все переменные, заданные в таком объявлении, имеют одинаковый тип.
Примеры.
int х; /* пример 1 */
unsigned long reply, flag; /* пример 2 */
double order; /* пример 3 */
В первом примере объявляется простая переменная х. Эта переменная может принимать любое значение из области значений типа int.
Во втором примере объявлены две переменные: reply и flag. Обе переменные имеют тип unsigned long.
В третьем примере объявлена переменная order, которая имеет тип double. Этой переменной могут быть присвоены значения с плавающей точкой.
Объявление переменной перечислимого типа
Синтаксис:
enum [<тег>]{<список-перечисления>} <описатель>[,<описатель>…];
enum <тег> <идентификатор> [<идентификатор>…];
Объявление переменной перечислимого типа задает имя переменной и определяет список именованных констант, называемый списком перечисления. Каждому элементу списка перечисления ставится в соответствие целое число. Переменная перечислимого типа может принимать только значения из своего списка перечисления. Элементы списка имеют тип int. Поэтому переменной перечислимого типа выделяется ячейка памяти, необходимая для размещения значения типа int. Перечислимый тип, таким образом, представляет собой подмножество целого типа. Над объектами перечислимого типа определены те же операции, что и над объектами целого типа.
<Описатель> специфицирует либо переменную перечислимого типа, либо указатель на значение перечислимого типа, либо массив элементов перечислимого типа, либо функцию, возвращающую значение перечислимого типа, либо более сложный объект, являющийся комбинацией перечисленных типов.
Объявление переменной перечислимого типа начинается с ключевого слова enum и имеет две формы представления.
В первой форме задается список перечисления, содержащий именованные константы. Необязательный <тег> — это идентификатор, который именует перечислимый тип, специфицированный данным списком перечисления, <идентификатор> — это имя переменной перечислимого типа. В одном объявлении может быть описано более одной переменной данного перечислимого типа.