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

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

Определим шаблон структуры data, содержащий информацию о дне рождения (год, месяц, день), и структурные переменные masha_data и sasha_data с информацией о днях рождения Маши и Саши:

struct data

{

int year; //год

unsigned mes; //месяц

unsigned day; //день

};

data masha_data, sasha_data;

Тогда:

masha_data.day //доступ к полю «день рождения» Маши

sasha_data.year //доступ к полю «год рождения» Саши

masha_data (вся информация о дате рождения Маши),

sasha_data (вся информация о дате рождения Саши).

Для данного структурного типа опишем массив структур person_data:

data person_data [20];

Тогда:

person_data – информация о датах рождения всей группы (массива людей из двадцати человек);

person_data[i] – информация о дате рождения (i+1) – го члена группы (i – ый элемент массива);

person_data[i]. mes – месяц рождения (i+1) – го члена группы;

Определим структурный тип (шаблон структуры) mash с информацией о владельце автомобиля: номер, марка автомобиля, фамилия и адрес владельца.

struct Auto

{int nomer ; //номер автомобиля

char marka[20]; //марка автомобиля

char fio[40]; //фамилия владельца

char adres[60] //адрес владельца

};

Auto mers, volvo, alfa_r [5], *mazda, person_list [20]; //определение структурных переменных

mers.marka доступ к полю «марка» автомобиля mers

mers – вся информация о владельце автомобиля mers

volvo.fio[0] первая буква фамилии владельца автомобиля volvo

alfa_r [1].adres[0] – первый символ адреса второго элемента массива владельцев alfa_r

person_list – информация о всех владельцах автомобилей (массив из двадцати наборов данных);

person_list[i] – информация о владельце (i+1) –го автомобиля (i –ый элемент в наборе данных);

person_list[i].fio – фамилия владельца (i+1) –го автомобиля;

person_list[i].fio[j] j-ая буква в фамилии владельца (i+1) –го автомобиля

Расположение массива структур в памяти:

person_list

1-ый владелец:

person_ list [0]

2-ой владелец:

person_list [1]

i-ый владелец:

person_list [i-1]

...

20-ый владелец:

person_list [19]

nomer(4 байта)

marka(20 байт)

fio(40 байт)

adres(60 байт)

nomer

marka

Adres Adre s adres

nomer

marka

fio О

a dres

ОООООООО

ОООООООО

ОOОООООО

ОООООООО

ОООООООО

p erson_list [1]. fio person_list [i-1].fio[j]

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

struct {char name[20];

char title[44];

int year;

float price;

} books[25];

Тогда к полю year в i-ом элементе массива структур books можно обратиться следующим образом:

books[i].year=2007;

(*(books+i)).year=2007;

(books+i)->year=2007;