Опубликован: 05.07.2006 | Доступ: свободный | Студентов: 4680 / 885 | Оценка: 4.12 / 3.74 | Длительность: 18:59:00
Лекция 10:

Справочное руководство по языку C

< Лекция 9 || Лекция 10: 1234567891011

9.19. Присваивание структуры

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

В реализации возвращения структур функциями на PDP-11 имеется коварный дефект: если во время возврата происходит прерывание и та же самая функция реентерабельно вызывается во время этого прерывания, то значение возвращаемое из первого вызова, может быть испорчено. Эта трудность может возникнуть только при наличии истинного прерывания, как из операционной системы, так и из программы пользователя, прерывания, которое существенно для использования сигналов; обычные рекурсивные вызовы совершенно безопасны.

9.20. Тип перечисления

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

спецификатор-перечисления
-------------------------

с синтаксисом

пецификатор-перечисления:
-------------------------
enum список-перечисления
     -------------------
enum идентификатор  список-перечисления
     -------------  -------------------
enum идентификатор
     -------------
cписок-перечисления:
-------------------
перечисляемое
-------------
список-перечисления, перечисляемое
-------------------  -------------
перечисляемое:
--------------
 идентификатор
 -------------
 идентификатор = константное выражение
 -------------   ---------------------

Роль идентификатора в спецификаторе-перечисления полностью аналогична роли ярлыка структуры в спецификаторе- структуры ; идентификатор обозначает определенное перечисление. Например, описание

enum color {red, white, black, blue}; 
. . . 
enum color *cp, col;

Объявляет идентификатор color ярлыком перечисления типа, описывающего различные цвета и затем объявляет cp указателем на объект этого типа, а col - объектом этого типа.

Идентификаторы в списке-перечисления описываются как константы и могут появиться там, где требуются (по контексту) константы. Если не используется вторая форма перечисляемого (с равеством = ), то величины констант начинаются с 0 и возрастают на 1 в соответствии с прочтением их описания слева на право. Перечисляемое с присвоением = придает соответствующему идентификатору указанную величину; последующие идентификаторы продолжают прогрессию от приписанной величины.

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

Объекты данного типа перечисления рассматриваются как объекты, имеющие тип, отличный от любых типов и контролирующая программа lint сообщает об ошибках несоответствия типов. В реализации на PDP-11 со всеми перечисляемыми переменными оперируют так, как если бы они имели тип INT.

9.21. Таблица изображений непечатных символов языка "C".

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

Таблица 9.4.
Значение Изображение *в тексте
Фигурная открывающаяся скобка {
Фигурная закрывающаяся скобка }
Вертикальная черта |
Апостороф \'
Волнистая черта ~

* П_р_и_м_е_ч_а_н_и_е:

Изображения приведены для операционной системы UNIX. При работе компилятора "C" под управлением любой другой операционной системы, необходимо воспользоваться соответствующим руководством для данной системы.

< Лекция 9 || Лекция 10: 1234567891011