ВУЗ:
Составители:
Рубрика:
24
другом, поэтому размер объединения равен размеру максимального элемента.
Объединения могут инициироваться только значением первого элемента.
Примеры:
struct MyStruct { int i; // 2 байта
char str [20]; // 20 байт
float f; // 4 байта
} S; // sizeof (MyStruct) равно 26 байт
union MyUnion { int i; // 2 байта
char str [20]; // 20 байт - максимум
float f; // 4 байта
} U; // sizeof (MyUnion) равно 20 байт
Элементы структуры или объединения могут быть определены как битовые
поля шириной от 1 до 16 бит
, знаковые или беззнаковые. Общая форма описания
битового поля:
имя_типа имя_поля : ширина;
Допустимые типы битовых полей - int, char, unsigned int, unsigned char.
Ширина битового поля - целое число от 0 до 16. Идентификатор поля может быть
пропущен, в этом случае заданное число бит размещается в памяти, но будет
недоступно. Для знаковых полей старший левый бит интерпретируется как
знак.
Над элементами битовых полей не может быть выполнена операция взятия адреса
&.
Пример:
struct Date
{ unsigned int Day:5;
unsigned int Mon:4;
unsigned int Year:7;} Start ={1,9,98};
Cхема размещения полей в памяти для приведенного примера соответствует
рисунку.
Year Mon Day
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Рисунок
24
другом, поэтому размер объединения равен размеру максимального элемента.
Объединения могут инициироваться только значением первого элемента.
Примеры:
struct MyStruct { int i; // 2 байта
char str [20]; // 20 байт
float f; // 4 байта
} S; // sizeof (MyStruct) равно 26 байт
union MyUnion { int i; // 2 байта
char str [20]; // 20 байт - максимум
float f; // 4 байта
} U; // sizeof (MyUnion) равно 20 байт
Элементы структуры или объединения могут быть определены как битовые
поля шириной от 1 до 16 бит, знаковые или беззнаковые. Общая форма описания
битового поля:
имя_типа имя_поля : ширина;
Допустимые типы битовых полей - int, char, unsigned int, unsigned char.
Ширина битового поля - целое число от 0 до 16. Идентификатор поля может быть
пропущен, в этом случае заданное число бит размещается в памяти, но будет
недоступно. Для знаковых полей старший левый бит интерпретируется как знак.
Над элементами битовых полей не может быть выполнена операция взятия адреса
&.
Пример:
struct Date
{ unsigned int Day:5;
unsigned int Mon:4;
unsigned int Year:7;} Start ={1,9,98};
Cхема размещения полей в памяти для приведенного примера соответствует
рисунку.
Year Mon Day
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Рисунок
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »
