Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6,7,8 базовый Си.docx
Скачиваний:
4
Добавлен:
16.11.2018
Размер:
117.96 Кб
Скачать

Тема 6. Структуры

Цель: познакомиться со способами создания структурного типа данных i переменных структурного типа, с операторами доступа к элементам структурных переменных, с вложенными структурами i массивами структур в языке Си, с оператором SizeOf и декларацией typedef .

6.1 Понятие структуры в языке Си

6.2 Объявление типа структуры

6.3 Декларация переменных структурного типа

6.4 Доступ к элементам структурной переменной

6.5 Массивы структур

6.6 Оператор sizeof

6.7 Декларация typedef

6.1 Понятие структуры в языке Си

Структура - это одна или несколько переменных, возможно, различных типов данных, которые сгруппированы под одним именем.

В языке Си термин "структура" соответствует понятию "запись" в языках программирования.

Пример 1: строка таблицы журнала студенческой группы.

Пример 2: точка в пространстве.

Пример 3: круг на плоскости.

Для того, чтобы работать со структурой, необходимо:

  1. объявить структурный тип;

  2. декларировать переменные этого типа.

6.2 Объявление типа структуры

Синтаксис:

struct [<имя = тег>]

{<Декларация_члена 1>;

<Декларация_члена 2>;

...

<Декларация_члена n>;

};

Декларация структуры - это описание типа данных.  Если указано имя, то это и есть имя типа .  Имена тегов и имен членов структуры могут совпадать с именами других переменных программы.  Такое описание только описывает образец (шаблон) структуры данного типа, но ремонт, товары НЕ вiдiляе.

Пример 4: точка А в пространстве.

struct struct point

{Int xa {int xa;

int ya; int ya;

int za; int za;

};};

/ * Без тега * / / * с тегом * /

/ * Новый тип - struct point * /

Пример 5: круг на плоскости.

struct struct circle

{Float x0 {float x0;

float y0; float y0;

float r; float r;

};};

/ * Без тега * / / * с тегом * /

/ * Новый тип - struct circle * /

6.3 Декларация переменных структурного типа

Синтаксис:

I. <Декларация типа структуры> <список переменных>;

Это сочетание способов, в котором в одной декларации описывается структурный тип и переменные этого структурного типа.

II. struct <тег> <список переменных>

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

Пример 6: описать прямую, проходящую через точки А i В,

используя ранее введенный тип для представления точки в пространстве.

struct struct point

{Int xa {int xa;

int ya; int ya;

int za; int za;

} A, b;};

struct point a, b;

Инициализации структурных переменных можно выполнить при ее объявлении ( по аналогии с массивами ):

Пример 7: круг с центром (2, 3) и радиусом 5,5.

/ * Без тега * / / * с тегом * /

struct circle pr = {2.0, 3.0, 5.5}

{Float x0;

float y0;

float r;

} Pr = {2.0, 3.0, 5.5};

6.4 Доступ к элементам структурной переменной

Синтаксис:

<Имья_структуры> . <имья_члена>

Оператор. - Бинарный, iнфiксний, лiвоасоцiативний, наивысший приоритет.

Пример 8: расстояние от (0,0) до точки pt.

struct

{Float x;

float y;

} Pr = {20,15}

double dist;

dist = sqrt ((double) pt.x * pt.x + (double) pt.y * pt.y);

printf («От начала координат");

printf ("до точки (% f,% f)", pt.x, pt.y);

printf ("расстояние% f", dist);

Структуры можно вкладывать друг в друга (нет ограничения на глубину вложения).

Прямоугольник на плоскости образуется в результате пересечения двух прямых углов, в которых стороны Параллельные осям координаты, первый из этих углов образуется точкой pt1, второй угол - точкой pt2.  Объявления на языке Си геометрического объекта типа прямоугольник, со сторонами паралельным осям координат:

Пример 9: задания прямоугольника координатами точек двух углов.

struct rectange

{

struct point pt1;

struct point pt2;

};

srtuct rectange poly;

float a; / * длина стороны а * /

a = poly.pt2.x - poly.pt1.x;

printf ("Длина стороны a =% f \ n", a);