Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
60
Добавлен:
29.04.2018
Размер:
341 Кб
Скачать
☆

ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ

•– структуры (structure),

•– объединения (union),

•– перечисляемый тип (enumeration),

•– поля битов (bit fields),

•– с помощью оператора typedef создать новое имя (псевдоним) для уже существующего типа.

Объединения

•

Именованная совокупность данных

 

разных типов, размещаемая с учетом

 

выравнивания в одной и той же области

 

памяти, размер которой достаточен для

 

хранения наибольшего элемента.

•

формат

•union идентификатор_объединения {

•описание элемента 1;

•………………….

•описание элемента n; };

Пример выделения памяти

MEM

long ll;

int ii[2];

char cc[4];

int xx;

Компилятор не следит за тем, что делается с объединением после присваивания

•x.f = 2.222

•cout << x.1 // будет выведен

«мусор»

union { int ax;

char a1[4]; } A;

•Объединение A позволяет получить отдельный доступ к каждому из

байтов A.al[0], A.al[1], A.al[2] ,

A.al[3] четырехбайтного числа A.ax.

Свойства

•Данные-члены перекрывают друг друга

•Все члены размещаются, начиная с одного и того же адреса

•В любой момент времени можно присвоить значение лишь одному такому члену

•Не бывает статических членов

•Не бывает членов, являющихся ссылками

Допустимые операции

=

&

. ->

Возможные ошибки

//Не могут выполняться операции сравнения

Назначение

•для экономии памяти, когда объединяемые элементы логически существуют в разные моменты времени

•для разнотипной интерпретации поля данных (управление памятью)

Соседние файлы в папке Лекции