Похожие презентации:
Объединения и структуры. Лекция №6
1.
Лекция № 6Объединения и
структуры
2.
Зачем нужны структуры ?Программа хранит сведения о студентах
#define N 30
...
char fio[100][N];
int
year[N];
float money[N];
bool status[N];
Как поменять местами двоих студентов ?
Нужны 4 дополнительные переменные.
char
int
tmp_f[100];
tmp_y;
float tmp_m;
int
tmp_s;
3.
Зачем нужны структуры ?Для обмена потребуется 12 операций присваивания
tmp_f = fio[5];
fio[5] = fio[7];
fio[7] = tmp_f;
tmp_m = money[5];
money[5] = money[7];
money[7] = tmp_m;
tmp_y = year[5];
tmp_s = status[5];
year[5] = year[7]; status[5] = status[7];
year[7] = tmp_y;
status[7] = tmp_s;
Какими будут затраты, если увеличится количество
информации характеризующей студента ?
4.
СтруктураПозволяет сгруппировать разные типы под один
новый тип данных
struct student
{
char fio[100];
int
year;
float money;
int
status;
};
// поля структуры
struct student st[N];
5.
Ключевое слово typedefПисать всё время struct неудобно !
typedef Позволяет определить новый тип данных .
struct student
{
char fio[100];
int
year;
float money;
int
status;
};
// поля структуры
typedef struct student person;
person st[N];
6.
Инициализация структурыЗадание начальных значений для полей
7.
Доступ к полям структурыОперация « . » позволяет обращаться к полям
структуры
struct point
{
int
x;
int
y;
};
typedef struct point figure;
figure poly[N];
poly[0].x = 100; poly[0].y = 400;
poly[N-1] = poly[0];
8.
Доступ к строковым полям структурыОперация « . » не работает для строковых полей.
Подключаем файл string.h,
используем функцию strcpy.
struct student
{
char fio[100];
...
};
// поля структуры
strcpy(st[0].fio,"Petrov S.D.");
9.
Поиск молодого студента10.
Сортировка структурированныхданных
11.
Сортировка структурированныхданных
strcmp(s1,s2) сравнивает строку s1 со строкой s2
0 – строки эквивалентны
> 0 – если s1<s2, <0 — если s1>s2
12.
Пример из vfw.htypedef struct _MainAVIHeader
{
DWORD dwMicroSecPerFrame;
DWORD dwMaxBytesPerSec;
DWORD dwPaddingGranularity;
DWORD dwFlags;
DWORD dwTotalFrames;
DWORD dwInitialFrames;
DWORD dwStreams;
DWORD dwSuggestedBufferSize;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwReserved[4];
} MainAVIHeader
13.
Иерархия структурstruct student
{ char fio[100];
int
year;
};
struct kafedra
{ struct student st[30];
struct prepod
pr[30];
char name[100];
};
14.
ОбъединениеПеременные объединения занимают одну и ту же
область памяти
union my
{
short int index;
char ch[2];
};
// поля
ch[0]
ch[1]
байт 0
байт 1
index