Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
114-124.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
121.04 Кб
Скачать

Описание массива структур.

Процесс описания массива структур совершенно аналогичен описанию любого другого типа массива:

struct book libry [MAXBKS];

Этот оператор объявляет libry массивом, состоящим из MAXBKS-элементов. Каждый элемент массива представляет собой структуру типа book. Таким образом, libry[0] является book-структурой, libry[1] — второй book-структурой и т. д. Имя libry само по себе не является именем структуры; это имя массива, содержащего структуры.

Определение элементов массива структур.

При определении элементов массива структур мы применяем те же самые правила, которые используются для отдельных структур: сопровождаем имя структуры операцией получения элемента и именем элемента:

libry [0].value value — первый элемент массива

libry [4].title title — пятый элемент массива

Заметим, что индекс массива присоединяется к libry, а не к концу имени:

libry.value[2] /* неправильно */

libry[2].value /* правильно */

Мы используем libry[2].value, потому что libry[2] является именем структурной переменной точно так же, как libry[1] является именем другой структурной переменной, а ранее doyle было именем структурной переменной.

Между прочим, что бы это значило?

libry[2].title[4]

Это был бы пятый элемент элемента title (т. е. title [4]) структуры типа book, описанный третьей структурой (т. е. libry[2]). В нашем примере им был бы символ р. Это означает, что индексы, находящиеся справа от операции ".", относятся к отдельным элементам, в то время как индексы, расположенные слева от операции, относятся к массивам структур.

  1. Вложенные структуры.

Вложенные структуры.

Структура представляет собой интегрированный тип данных, любой элемент структуры может быть структурой.Иногда бывает удобно, чтобы одна структура содержалась или была «вложена» в другую.

Например, Шалала Пироски строит структуру, содержащую информацию о ее друзьях. Один элемент структуры — это, конечно, имя друга. Однако имя можно представить самой структурой с разными элементами для имени и фамилии. Здесь приведен сокращенный пример деятельности Шалалы.

/* пример вложенной структуры */

#include <stdio.h>

#define LEN 20

#define M1 " Thank you for a beautiful evening,"

#define M2 " You, certainly, right, that"

#define M3 "-original guy. We should get together"

#define M4 " to taste very good"

#define M5 " and enjoy a little bit."

struct names { /*первый структурный шаблон */

char first[LEN];

char last[LEN];

};

struct guy

{ /* второй шаблон */

struct names handle; /* вложенная структура */

char favfood[LEN];

char job[LEN];

float income;

};

void main()

{

static struct guy fellow = { /* инициализация переменной */

{"Franco", "Otel"},

" eggplant",

" knitter of doormat",

15435.00

};

printf (" Dear %s, \n \n", fellow.handle.first);

printf (" %s %s.\n", M1, fellow.handle.first);

printf (" %s %s\n", M2, fellow.job);

printf (" %s\n", M3);

printf (" %s%s%s\n\n", M4, fellow.favfood, M5);

printf (" %40s%s\n" , " " , " See you later," );

printf (" %40s%s\n", " " , "Shalala");

}

Вот результат работы программы:

Дорогой Франко,

Спасибо за прекрасный вечер, Франко.

Вы конечно, правы, что вязальщик полавиков — своеобразный парень.

Мы должны собраться отведать очень вкусный баклажан и немного повеселиться.

До скорой встречи, Шалала

Во-первых, следует рассказать о том, как поместить вложенную структуру в шаблон. Она просто описывается точно так же, как это делалось бы для переменной типа int:

struct names handle;

Это означает, что handle является переменной типа struct names. Конечно, файл должен также содержать шаблон для структуры типа names.

Во-вторых, следует рассказать, как мы получаем доступ к элементу вложенной структуры. Нужно дважды использовать операцию ".":

fellow.handle.first = = " Франко" ;

Мы интерпретируем эту конструкцию, перемещаясь слева направо:

(fellow. handle). first

То есть первым находим элемент fellow, далее элемент handle структуры fellow, а затем его элемент first Теперь рассмотрим указатели.

Доступ к элементам вложенных структур такой же как и к любой структуре ( с помощью операции «точка» или с помощью указателя). При доступе к элементам вложенных структур операция «точка» используется дважды.(например fellow.handle.first = = " Франко" ;)

  1. Использование указателей на структуры. Описание и инициализация указателя на структуру. Доступ к элементу структуры при помощи указателя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]