Объектно-ориентированное программирование. Сивохин А.В - 24 стр.

UptoLike

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

                                  Рисунок