Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
21.03.2016
Размер:
6.05 Mб
Скачать

Неоднородные типы данных. Записи (структуры)

1.1.Определение записи (структуры)

1.2.Описание шаблона структуры

1.3.Синтаксис описания структурной переменной

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

1.5.

Доступ к отдельным полям структурной перемен

ной

1.6.

Совмещение описания шаблона структуры и стру

ктурной переменной 1.7. Совмещение описания шаблона, описания

структурных переменных и инициализации полей

водном предложении

1.8.Определение объема памяти, выделяемой под

структурную переменную 1.9. Копирование структур-переменных

1.10.Структурные переменные и указатели

1.11.Массивы структурных переменных

Пример 1

В современных языках программирования логическое

объединение целостных понятий называется записью (Pascal) или структурой (С/С++).

Структуры (записи) используются для логического и физического объединения данных произвольных типов, так же как массивы служат для группирования данных одного типа.

Определение структуры вводит новый пользовательский тип в программу, который может быть использован так же, как любой встроенный тип.

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

char

fam[30];

// Фамилия

char address[150];

// Домашний адрес

char

phone[10];

// Телефон

int

day;

// День рождения

int

month;

// Месяц рождения

int

year;

// Год рождения

int

oc[4];

// Оценки

float

sr;

// Средний балл

В языке С можно так переписать приведенный выше фрагмент:

struct date

 

{

 

 

int

day;

// День

int

month;

// Месяц

int

year;

// Год

};

 

 

struct student

 

{

 

 

char fam[30];

//Фамилия

char address[150];

// Домашний адрес

struct date birth;

// Дата рождения

char

phone[10];

// Телефон

int

oc[4];

// Оценки

float

sr;

// Средний балл

};

 

 

struct student S1; struct student S [100];

14

Объявление переменных для обработки данных одного студента, не используя новый тип

char

fam[30];

//Фамилия

char

address[150];

// Адрес

char

phone[10];

// Телефон

int

day;

// День

рождения

 

 

int

month;

// Месяц

рождения

 

 

int

year;

// Год рождения

int

oc[4]

// Оценки

float

sr;

// Средний балл

Объявление массивов для обработки данных всех студентов, не используя новый тип

char

Sfam[100] [30];

//Фамилии

char

Saddress[100] [150]; //Адреса

char

Sphone[100] [10];

// Телефоны

int

Sday[100];

// Дни рождения

int

Smonth[100]; / Месяцы рождения

int

Syear[100];

// Годы рождения

int

Soc[100] [4]

// Оценки

float

Ssr[100];

// Средние баллы

Объявление переменных для обработки данных одного студента (S1) и всех студентов ( S[100] ) с использованием новых типов

struct date

 

{

 

 

int

day;

// День

int

month;

// Месяц

int

year;

// Год

};

 

 

struct student

 

{

 

 

char fam[30];

//Фамилия

char

address[150];

// Домашний адрес

struct date birth;

// Дата

рождения

 

char

phone[10];

// Телефон

int

oc[4];

// Оценки

float

sr;

/ Средний

балл

 

 

};

 

 

struct student S1; struct student S [100];

То, что поля структур сами могут быть структурами, позволяет целостным образом описывать достаточно сложные понятия реального мира.

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

Итак,

Структура (struct) или запись (record) – это составной тип данных,

состоящий из фиксированного числа компонентов разного типа, называемых полями (Helds).

Структуры целесообразно использовать тогда, когда необходимо объединить разные данные, относящиеся к одному объекту.

Техника Apple Нетбуки Доступные цены

Артикул

Наименование

Цена(безнал.с

Цена(нал.), грн.

 

 

НДС), грн.

 

MC349

iPad 16Gb Wi-Fi+3G ()

8 086,50

7 321,20

MC496

iPad 32Gb Wi-Fi+3G ()

9 077,76

8 222,30

MC497

iPad 64Gb Wi-Fi+3G ()

10 158,48

9 204,90

Расписание авиарейсов

Прилет в Москву:

Шереметьево Домодедово Внуково

Рейс

Вылет

Прилет

Время

Примечание

 

 

 

прилета

 

S7882

Владикавказ

Дом

16:50 17:33

задержан

SU530

Шанхай

Шер.F

16:50 18:20

приземлился

ЮТ448

Архангельск

Вну. Д

16:50 16:41

 

Д9604

Ростов-на-

Вну.А

16:50

ожидается

 

Дону

 

 

 

МИ1220

Минеральные

Вну.А

16:50 16:53

ожидается

 

Воды

 

 

 

FV4126

Гамбург

Шер.D

17:05 16:58

приземлился

Описание структуры в программе состоит из двух этапов:

1.Описание шаблона структуры.

2.Описание структурной переменной.

Синтаксис описания шаблона стpуктуры:

struct <имя_ шаблона

{

<тип1> <имя_поля1>; <тип2> <имя_поля2>;

<типN> <имя_поляN>; };

<тип1>, <тип2>, … ,<типN> - любые основные типы (int, char, float, и т. д.), массив, указатель, структура, объединение;

<имя_поля1>, <имя_поля2>, … ,<имя_поляN> - допустимые идентификаторы языка.

Примеры описания шаблона структуры:

Пример1.

struct date

{

 

int

day;

int

month;

int

year;

};

 

//Имя шаблона – date

//Имя поля1 – day

//Имя поля2 – month

//Имя поля3 – year

Пример 2.

struct student

{

char fam[30]; char address[150]; struct date birth; char phone[10]; int oc[4];

float sr;

};

//Имя шаблона - student

//Имя поля1 - fam

//Имя поля2 - address

//Имя поля3 - birth

//Имя поля4 - phone

//Имя поля5 - oc

//Имя поля6 – sr

На слайд 12

Синтаксис описания структурной переменной: struct <имя_шаблона> <имя_переменной>;

Или

struct <имя_шаблона> <список имен переменных>;

Примеры:

struct student S1;

struct student S1, S2, S3; struct student S [100];

Соседние файлы в папке ЭУМК_ОАиП__PDF