Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
114-124!!!.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
53.35 Кб
Скачать

Структуры и битовые поля.

В С и C++ имеется возможность доступа к отдельным разрядам (битам) в некотором более крупном типе данных, например, в байте. Это полезно, к примеру, для изменения масок, используемых для системных целей и графики. Возможность доступа к разрядам строится на основе структур С и C++.

Рассмотрим для примера информацию, необходимую для изменения регистра статуса клавиатуры компьютера. Этот регистр в компьютерах IBM содержит следующую информацию:

биты регистра

Статус клавиатуры: 76543210

Порт(417h)

где

bit 0 = RIGHT SHIFT не нажат (1)

bit 1 = LEFTSHIFT не нажат (1) и т д

bit 2 = CTRL не нажат (1)

bit 3 = ALTненажат (1)

bit 4 = SCROLL LOCK активен (1)

bit 5 = NUM LOCK активен (1)

bit 6 = CAPS LOCK активен (1)

bit 7 = INS активен (1)

Для доступа и управления этими данными можно создать структуру следующего вида:

НАСЧЕТ СТРУКТУРЫ ТОЧНО НЕ ЗНАЮ..

struct stkeybits {

unsigned char

ucrshift: 1, /* младший разряд */

uclshift: 1,

ucctrl: 1,

ucalt: 1,

ucscroll: 1,

ucnumlock: 1,

uccaplock: 1,

ucinsert: 1; /* старший разряд */

} stkey_register;

Биты в структуре начинаются с младшего и заканчиваются старшим. Можно указывать несколько битов, задавая их количество (вместо 1). В битовых полях можно использовать только целочисленные типы.

Обращение к элементам структуры битовых полей выполняется как обычно.

Структуры. Их дальнейшее использование.

Мы не будем больше рассказывать о структурах, но хотелось бы отметить одно очень важное использование структур: создание новых типов данных. Пользователи компьютеров разработали новые типы данных, гораздо более эффективные для определенных задач, чем массивы и простые структуры, которые мы описали.

Эти типы имеют такие названия, как очереди, двоичные деревья, неупорядоченные массивы, рандомизированные таблицы и графы. Многие из этих типов создаются из «связанных» структур. Обычно каждая структура будет содержать один или два типа данных плюс один или два указателя на другие структуры такого же типа.Указатели служат для связи одной структуры с другой и для обеспечения пути, позволяющего вам вести поиск по всей структуре.

  1. Объединения: синтаксис и правила. Создание простого объединения.

Объединения.

объединения напоминают структуры; Объединение может содержать несколько различных типов данных. Однако в объединении эти данные занимают одну и ту же область памяти! Таким образом, в отдельный момент времени объединение может хранить информацию только об одном типе данных.

Объединение — это средство, позволяющее запоминать данные различных типов в одном и том же месте памяти.

Объединения устанавливаются таким же способом, как и структуры. Есть шаблон объединения и переменные объединения.

Объединения: синтаксис и правила.

union поле_тега {

тип поле1;

тип поле2;

тип поле3;

...

тип полеN;

};unmy_union;

С объединением связана переменная unmy_union. Если этот оператор расположен в функции, то область действия данного объединения является локальной для функции. Если оператор расположен за пределами всех функций, то область действия объединения — глобальная.

с одним объединением можно связать несколько переменных; можно также обращаться к членам объединения при помощи операции "точка" (.). Синтаксис очень простой:

unname.mname

В этой записи unname является переменной, связанной с типом объединения, а mname — имя любого элемента объединения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]