Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию