lec15
.pdfВозможный результат выполнения программы.
Смеси (объединения).
Объединение можно рассматривать как структуру, все элементы которой имеют нулевое смещение от ее начала. При таком размещении разные переменные занимают в памяти один и тот же участок. Т.о. объединение обеспечивают доступ к одному и тому же участку памяти с помощью переменных разного типа. Необходимость в такой возможности возникает, например, при необходимости выделения из внутреннего представления целого числа его отдельных байт.
Схема размещения объединения в памяти.
Смысловое отличие объединения от структуры состоит в том, что записать информацию в объединение можно с помощью одного элемента, а выбрать данные из того же участка памяти с помощью другого.
Пример: CC.ii=15;
с помощью конструкций CC.hh[0], CC.hh[1] можно получить внутренние байты числа 15.
Размеры участка памяти отводимые для объединения определяются размером самого большого из элементов.
Пример программы.
Печать scan и ASKII кодов клавиатуры.
В MS-DOS принято, что каждое нажатие на любую клавишу клавиатуры приводит к занесению в буфер клавиатуры 2 - х байт, младший из которых по адресу содержит ASKII код клавиши, а старший содержит скэнкод клавиши. Функция bioskey(0) при пустом буфере ожидает нажатия любой клавиши, если в буфере уже есть коды, то функция выбирает из буфера очередной двубайтовый код и возвращает его в виде целого числа.
Пример работы программы.
Битовые поля.
Основные особенности.
IБитовое поле может быть только элементом структуры или объединения и вне этих типов не встречается.