11.10 Структуры
Зачем? Разве нельзя всё смоделировать массивами?
Описание структуры struct ярлык {поля);
Описание переменной типа struct ярлык: struct ярлык переменная.
Написать функцию, которой передаётся переменная типа структура, и возвращает она переменную типа структура - Внутри функции перебить поля передаваемой переменной
- Вернуть перебитую переменную
- Посмотреть адреса (минимум три разных)
- Посмотреть sizeof (выравнивание)
Массив и структуры — составные типы данных. Чем принципиально int a[3] отличается от struct {int a0; int a1; int a2;} a?
простое упражнение на структуру
Массивы структур
Задать структурку dot с координатами x, y. Ввести 3 точки, среди всех пар найти самую удалённую друг от друга - Можно сравнивать квадраты расстояний
Ввести N, затем N точек. Вывести максимальное расстояние
Указатель на структуру
Зачем нужен указатель на структуру?
Процедура «ввод точки», которая возвращает результат scanf Использование «a->b» вместо (*a).b
Кстати, а зачем?
Задать структуру triangle, в которой хранятся три точки и площадь треугольника. Написать функцию ввода, которая заполняет указатель на треугольник введенными данными, а так же вычисляет и записывает площадь по формуле Герона.
TODO а надо? упражнение на массив треугольников
Указатель на структуру и malloc / calloc
Если структур планируется много, локально их заводить нельзя. Надо malloc() или calloc(), а потом free()
Простейший пример
Переписать ввод треугольника так, чтобы он возвращал указатель на созданный треугольник (или NULL, если ввод неудачен)
Структуры и typedef
Что означают эти записи?
struct dottype {int x; int y;};
struct dottype {int x; int y;} dot;
struct {int x; int y;} dot;
Общий вид typedef
typedef описание константа_типа
Конструкция описание константа_типа в точности совпадает с описанием переменной, но typedef в начале делает констунту_типа типом
Переделать одно из упражнений выше в typedef
Переделать упражнение с треугольником в typedef
Не создавайте typedef-ы для ссылочных типов! В первую очередь — на структуры! Можно на функцию — но она сама по себе и так ссылочный тип.
Д/З
TODO
- На развесистую структуру
- На массив структур
- На указатель на структуру
- Сортировка структур по нескольким полям.
