Структуры в C |
![]() |
Добавил(а) microsin |
Структура - это переменная, которая содержит в себе набор других переменных, которые могут быть разных типов. Пример:
Тут определена переменная myvar, которая представляет собой структуру. Доступ к элементам структуры осуществляется через точку:
Если имеется указатель на структуру, то доступ к элементам с помощью
указателя происходит через стрелку. Для этого нужно создать тип нашей
структуры с помощью typedef, и объявить указатель с типом нашей
структуры:
С помощью структур можно применять битовые поля, которые упаковываются в
число, при этом память экономится. Компилятор IAR для AVR определяет
минимальный объем памяти, который выделяется под структуру, в 2 байта,
даже если количество бит в структуре меньше или равно 8 (для 8 бит было
бы достаточно одного байта). Далее, когда объем бит превышает 16,
выделяется уже 4 байта, и т. д. - объем выделяемой для битовой структуры
памяти почему-то всегда кратен 2 байтам. Примеры битовых структур:
Очень интересен тип данных union,
который позволяет один выделенный блок памяти интерпретировать
по-разному, что позволяет удобно манипулировать данными и одновременно
экономить память. Например,
Переменная myunion может выступать либо как целое myunion.i, либо как структура myunion.bf типа t9 (см. ранее определение типа t9), то есть набор битов myunion.bf.A, myunion.bf.B и т. д., что позволяет, например, менять переменную myunion.i, манипулируя битами myunion.bf. Младший D0 бит i будет всегда равен myunion.bf.A, D1 будет равен myunion.bf.B, и т. д. |