Если переменных типа структура много, то определяется массив структур.
void main(void){
struct book libry[100];
int i;
for(i=0; i<100; i++){
puts("Введите название книги");
gets(libry[i].title);
puts("Введите автора книги");
gets(libry[i], author);
puts("Введите цену книги");
scanf("%f",&libry[i].value);
}
}
Индекс применяется к имени массива структур libry[i].
Если libry[2].title[3] – это 4-й элемент в title в 3-й структуре типа book.
Вложенные структуры
Если одна структура содержится или "вложена" в другую, то говорят, что это вложенные структуры.
struct names{ char name[20];
char fio[20];};
struct worker{ struct names people;
char job[20];
float money;};
void main(void){
struct worker driver = {{"Иван", "Иванов"},
"водитель", 1234.1};
Для обращения к элементу вложенной структуры применяется две операции «точка».
puts(driver.people.name);
Указатели на структуры
Указателями на структуры легче пользоваться, чем самими структурами. Структура не может передаваться в качестве аргумента функции, а указатель на структуру может.
struct worker *pdrv;
pdrv = &driver;
struct worker driver[2]; //массив структур
а) pdrv = driver; // pdrv <=> &driver[0];
pdrv+1 <=> &driver[1].
Доступ к элементу структуры осуществляется через операцию ->.
pdrv->job -> driver[0].job ->(*prdv).job
б) pdrv->people.name
Операции над структурами
1) Операция получения элемента.
driver.money=1234;
2) Операция косвенного получения элемента.
pdrv->money=3456;