Struct B

{

int a1:12;

int a2:14;

int :6; // Пропускаем 6 бит

….

};

Приведем пример объединения, в котором первое поле занимает 1 байт, а второе поле является переменной структурного типа, включающей 8 битовый поле, каждое по 1 биту. Тем самым можно работать с 1 байтом, как с целым числом или обращаться к отдельным битам этого байта.

#include <stdio.h>

union MyByte

{

unsigned char byte;

struct

{

unsigned char b1: 1;

unsigned char b2: 1;

unsigned char b3: 1;

unsigned char b4: 1;

unsigned char b5: 1;

unsigned char b6: 1;

unsigned char b7: 1;

unsigned char b8: 1;

} bits;

};

 

void main()

{

union MyByte B;

// Заполняем отдельные биты

B.bits.b1=1;

B.bits.b2=1;

B.bits.b3=0;

B.bits.b4=0;

B.bits.b5=1;

B.bits.b6=0;

B.bits.b7=1;

B.bits.b8=0;

printf("%x", B.byte); // Будет напечатано 53 в шестнадцатиричной СС или 01010011

 

}

 

Директива определения типа typedef

Производный тип задается с помощью * [] struct union, иногда удобно производному типу присвоить одно простое имя, это можно сделать с помощью typedef. При этом после директивы typedef формат определения нового типа соответствует формату определения переменной данного типа, но введенное имя является не именем переменной, а именем нового типа.

Пример:

struct A { … };

A * m[10]; // Массив из 10 указателей на структуру A

Можно поступить по- другому:

typedef A *M[10]; // M – имя нового типа, задающего

// массив из 10 указателей на структуру A

M m; // Массив из 10 указателей на структуру A

 








Дата добавления: 2015-08-14; просмотров: 566;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.