Вот это я понимаю, быстро и удобно, и не нужно каждый раз писать пять параметров. А представьте теперь, что полей у структуры бы их было не 5, а допустим 10? Вот-вот, и я о том же.
Стоит отметить, что передача структурных переменных в функцию, как и в случае обычных переменных осуществляется по значению. Т.е. внутри функции мы работаем не с самой структурной переменной, а с её копией. Чтобы этого избежать, как и в случае переменных стандартных типов используют указатель на структуру. Там есть небольшая особенность, но об этом я расскажу в другой раз.
Кроме того, мы можем присваивать структурные переменные, если они относятся к одному и тому же шаблону. Зачастую это очень упрощает программирование.
Например, вполне реальная задача для каталога книг, упорядочить книги по количеству страниц.
Если бы мы использовали отдельные массивы, то сортировка выглядела бы примерно так.
for (int i = 99; i > 0; i--)
for (int j = 0; j < i; j++)
if (book_pages[j] > book_page[j+1]){
//меняем местами значения во всех массивах
int temp_date;
int temp_pages;
char temp_author[50];
char temp_title[100];
float temp_price;
temp_date = book_date[i];
book_date[i] = book_date[j];
book_date[j] = temp_date;
temp_pages = book_pages[i];
book_pages[i] = book_pages[j];
book_pages[j] = temp_pages;
//и так далее для остальных трех массивов
}
Совсем другой дело, если мы используем структуры.
for (int i = 99; i > 0; i--)
for (int j = 0; j < i; j++)
if (knigi[j].pages > knigi[j+1].pages){
struct book temp;
temp = knigi[j]; //присваивание структур
knigi[j] = knigi[j+1];
knigi[j+1] = temp;
}
Неоспоримое удобство, не правда ли?
Надеюсь, у меня получилось достаточно убедительно показать преимущества использования структур.
На этой радостной ноте, я и завершаю сегодняшний урок.
Практическое задание:
1. Добавить в структуру поле количество прочитанных страниц.
2. Напишите несколько дополнительных функций для описанной программы.
® Чтение данных в структуру из файла. В файле запись о каждой книге хранится в следующем формате:
Khnut||Art of programming. T.1||1972||129||764||234.2
Ritchie||The C Programming Language. 2 ed.||1986||80||512||140.5
Cormen||Kniga pro algoritmy||1996||273||346||239
Количество записей в файле не превышает 50 штук.
® Вывод в файл в виде отформатированной таблицы содержимое всего каталога.
® Функцию добавления книги в каталог.
® Функцию поиска по названию книги, по автору и по году издания. Например, вводим год издания, на экране формируется таблица с книгами этого года издания.
® Сортировка книг по стоимости.
® Функцию подсчитывающее количество прочитанных страниц.