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

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

– структуры (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.

Свойства

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

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

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

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

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

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

=

&

. ->

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

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

Назначение

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

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

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