Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Основные сведения
Давайте снова обратимся к процедурам преобразования даты из главы 5. Дата состоит из нескольких частей таких, как день, месяц, и год, и, возможно, день года и имя месяца. Эти пять переменных можно объеденить в одну структуру вида:
STRUCT DATE \( INT DAY; INT MONTH; INT YEAR; INT YEARDAY; CHAR MON_NAME[4]; \);
Описание структуры, состоящее из заключенного в фигурные скобки списка описаний, начинается с ключевого слова STRUCT. За словом STRUCT может следовать необязательное имя, называ- емое ярлыком структуры (здесь это DATе). Такой ярлык именует структуры этого вида и может использоваться в дальнейшем как сокращенная запись подробного описания. Элементы или переменные, упомянутые в структуре, называ- ются членами. Ярлыки и члены структур могут иметь такие же имена, что и обычные переменные (т.е. Не являющиеся членами структур), поскольку их имена всегда можно различить по кон- тексту. Конечно, обычно одинаковые имена присваивают только тесно связанным объектам.
Точно так же, как в случае любого другого базисного ти- па, за правой фигурной скобкой, закрывающей список членов, может следовать список переменных. Оператор
STRUCT \(...\) X,Y,Z;
синтаксически аналогичен
INT X,Y,Z;
в том смысле, что каждый из операторов описывает X, Y и Z в качестве переменных соотвествующих типов и приводит к выде- лению для них памяти. Описание структуры, за которым не следует списка пере- менных, не приводит к выделению какой-либо памяти; оно толь- ко определяет шаблон или форму структуры. Однако, если такое описание снабжено ярлыком, то этот ярлык может быть исполь- зован позднее при определении фактических экземпляров струк- тур. Например, если дано приведенное выше описание DATE, то
STRUCT DATE D;
определяет переменную D в качестве структуры типа DATE. Внешнюю или статическую структуру можно инициализировать, поместив вслед за ее определением список инициализаторов для ее компонент:
STRUCT DATE D=\(4, 7, 1776, 186, "JUL"\);
Член определенной структуры может быть указан в выраже- нии с помощью конструкции вида
имя структуры. Член -------------------- Операция указания члена структуры "." связывает имя структу- ры и имя члена. В качестве примера определим LEAP (признак високосности года) на основе даты, находящейся в структуре D,
LEAP = D.YEAR % 4 == 0 && D.YEAR % 100!= 0 \!\! D.YEAR % 400 == 0;
или проверим имя месяца
IF (STRCMP(D.MON_NAME, "AUG") == 0)...
Или преобразуем первый символ имени месяца так, чтобы оно начиналось со строчной буквы
D.MON_NAME[0] = LOWER(D.MON_NAME[0]);
Структуры могут быть вложенными; учетная карточка служа- щего может фактически выглядеть так:
STRUCT PERSON \( CHAR NAME[NAMESIZE]; CHAR ADDRESS[ADRSIZE]; LONG ZIPCODE; /* почтовый индекс */ LONG SS_NUMBER; /* код соц. Обеспечения */ DOUBLE SALARY; /* зарплата */ STRUCT DATE BIRTHDATE; /* дата рождения */ STRUCT DATE HIREDATE; /* дата поступления на работу */ \);
Структура PERSON содержит две структуры типа DATE. Если мы определим EMP как
STRUCT PERSON EMP;
то
EMP.BIRTHDATE.MONTH
будет ссылаться на месяц рождения. Операция указания члена структуры "." ассоциируется слева направо.
Date: 2015-09-17; view: 354; Нарушение авторских прав |