- •Структура как пользовательский тип и совокупность данных
- •Определение шаблона структуры и структурной переменной
- •Расположение структурных переменных в памяти
- •Инициализация структурных переменных
- •Вложенные структуры
- •Операции над структурными переменными
- •Массив структур
- •Структура в качестве аргумента функции
- •Примеры работы со структурами
- •person_list
- •Объединение как пользовательский тип и совокупность данных
- •Определение объединения и переменной объединяющего типа
- •Использование перечисляемого типа для обращения к полям объединения
- •Битовые поля структур и объединений
- •Определение битовых полей
- •Формирование кода символа с помощью битовых полей объединения
- •Формирование байта и вывод на экран его двоичного представления
При обращении к элементам структуры с помощью указателя нужно учитывать приоритет операций. Для изменения порядка действий необходимо использовать явные скобки.
Выражение (*ptr_date).year представляет собой обращение к элементу year структуры, связанной с указателем ptr_date. Нельзя опускать скобки в этом выражении,
так как приоритет операции точка (.) выше, чем операции доступ по указателю (*).
Для вложенных структур доступ к полям структурной переменной через указатель
реализуется следующим образом: p->q->mem, что равносильно (p->q) -> mem |
(поскольку |
|
операции -> и |
. выполняются слева направо). Аналогично, |
выражение |
stud. birthdate. month |
означает (stud. birthdate). month. |
|
Массив структур
Определим шаблон структуры data, содержащий информацию о дне рождения (год, месяц, день), и структурные переменные masha_data и sasha_data с информацией о днях рождения Маши и Саши:
struct data
{
int year; unsigned mes; unsigned day;
};
data masha_data, sasha_data;
Тогда:
masha_data.day |
//доступ к полю «день рождения» Маши |
sasha_data.year |
//доступ к полю «год рождения» Саши |
masha_data (вся информация о дате рождения Маши), sasha_data (вся информация о дате рождения Саши).
Для данного структурного типа опишем массив структур person_data: data person_data [20];
Тогда:
person_data – информация о датах рождения всей группы (массива людей из двадцати человек);
person_data[i] – информация о дате рождения (i+1) – го члена группы (i – ый элемент массива);
person_data[i]. mes – месяц рождения (i+1) – го члена группы;
Определим структурный тип (шаблон структуры) mash с информацией о владельце автомобиля: номер, марка автомобиля, фамилия и адрес владельца.
struct Auto
{int nomer ; //номер автомобиля char marka[20]; //марка автомобиля char fio[40]; //фамилия владельца
Программирование – лекция 18 (лекции Стрикелевой Л.В.)
10