Основы программирования на C++, PASCAL
stud1.fam или (*pst).fam или pst→fam
В последнем варианте используется знак операции доступа к элементу структуры: —>. Аналогично можно обращаться и к другим элементам этой переменной:
pst->FIO, pst->grup, pst->stip.
Поля структуры могут сами иметь структурный тип. Такие величины представляют многоуровневые деревья.
Допускается использование массивов структур. Например, сведения о 100 студентах могут храниться в массиве, описанном следующим образом:
student stud[100];
Тогда сведения об отдельных студентах будут обозначаться, например, так: stud[l].fam, stud [5].kurs и т.п. Если нужно взять первую букву фамилии 25-го студента, то следует писать:
stud[25].fam[0].
Пример 1. Ввести сведения об N студентах. Определить фамилии студентов, получающих самую высокую стипендию.
#include <stdio.h>
Элемент структуры типа поля битов. Использование структуры в программе на Си позволяет работать с отдельными битами, т.е. с разрядами двоичного кода. Для этого используются элементы структуры типа поля битов. Формат структуры, содержащий поля битов, следующий:
В качестве типа полей могут использоваться спецификаторы int, unsigned, signed. Минимальной величиной такого типа может быть структура, состоящая всего из одного битового поля. Пример описания такой структуры:
Конечно, для переменной cod в памяти будет выделено 8 бит (1 байт), но использоваться будет только один первый бит.
Объединение. Объединение — это еще один структурированный тип данных. Объединение похоже на структуру и в своем описании отличается от структуры тем, что вместо ключевого слова struct используется слово union.
union имя_типа
{определения элементов};
Объединение отличается от структуры способом организации во внутренней памяти. Все элементы объединения в памяти начинаются с одного байта.
Пусть в программе описана структура:
struct S
{ int i;
char ch;
long int L;
};
Расположение ее элементов в памяти будет следующим:
Элементы структуры занимают последовательные ячейки памяти с размером, соответствующим типу. Общий размер структуры равен сумме длин полей.
А теперь рассмотрим объединение со следующим описанием:
union S
{ int i;
char ch;
long int L;
);
Величина с таким типом в памяти будет расположена следующим образом: