Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
.doc
Скачиваний:
5
Добавлен:
23.09.2019
Размер:
440.83 Кб
Скачать

37) Понятие структуры. Доступ к членом структуры (в2б7)

Понятие структуры

Cтруктуры – это составной объект, в который входят элементы любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной. Тип структуры определяется записью вида:

struct { список определений } ;

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

тип-данных описатель;

где тип-данных указывает тип структуры для объектов, определяемых в описателях. В простейшей форме описатели представляют собой идентификаторы или массивы.

Пример:

struct { double x,y; } s1, s2;

struct { int year; char moth, day; } date1, date2;

Переменные s1, s2 определяются как структуры, каждая из которых состоит из двух компонент х и у. Каждая из двух переменных date1, date2

состоит из трех компонентов year, moth, day. Существует и другой способ ассоциирования имени с типом структуры, он основан на использовании тега структуры. Тег структуры аналогичен тегу перечислимого типа. Тег структуры определяется следующим образом:

struct тег { список описаний; };

где тег является идентификатором.

В приведенном ниже примере идентификатор student описывается как тег структуры:

struct student { char name[25];

int id, year_of_birth;

char grp; };

Объявление структурного типа обязательно заканчивается ; .

Тег структуры используется для последующего объявления структур данного вида в форме:

struct тег список-идентификаторов;

Пример:

struct studeut st1,st2;

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

struct node { int data;

struct node * next; } st1_node;

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

Пример инициализации структуры:

student stud1={"Васильков",1,1992,"ПО711"};

Доступ к членам структуры

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

имя-структуры.элемент

Оператор доступа к элементу структуры . соединяет имя структуры и имя элемента. Пусть объявлена структура, содержащая информацию о координатах точки:

struct {int x;

int y} pt;

Чтобы напечатать, например, координаты точки pt, используется следующее обращение к printf:

printf("%d, %d", pt.x, pt.y);

Пример обращения к элементам сруктуры student, описанной в предыдущем пункте:

st1.name="Иванов";

st2.id=st1.id;

st1_node.data=st1.year_of_birth;

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