Как и Structures , union является определяемым пользователем типом данных. В объединении все члены имеют одну и ту же ячейку памяти.
Например, в следующей C-программе x и y находятся в одном и том же месте. Если мы изменим x, то увидим, что изменения отражаются в y.
|
Выход:
After making x = 2: x = 2, y = 2 After making y = 10: x = 10, y = 10
Как размер объединения определяется компилятором?
Размер союза берется в соответствии с размером самого большого члена в союзе.
|
Выход:
sizeof(test1) = 4, sizeof(test2) = 4, sizeof(test3) = 40
Указатели на союзы?
Подобно структурам, мы можем иметь указатели на объединения и можем получать доступ к членам с помощью оператора стрелки (->). Следующий пример демонстрирует то же самое.
|
Выход:
65 A
Каковы заявления союза?
Объединения могут быть полезны во многих ситуациях, когда мы хотим использовать одну и ту же память для двух или более членов. Например, предположим, что мы хотим реализовать структуру данных бинарного дерева, в которой каждый конечный узел имеет двойное значение данных, в то время как каждый внутренний узел имеет указатели на два дочерних элемента, но нет данных. Если мы объявим это как:
|
тогда каждому узлу требуется 16 байтов, причем половина байтов теряется на каждый тип узла. С другой стороны, если мы объявим узел следующим образом, мы сможем сэкономить место.
|
Приведенный выше пример взят из книги « Компьютерные системы: перспектива программиста» (английский), 2-е издание .
Ссылки:
http://en.wikipedia.org/wiki/Union_type
Компьютерные системы: взгляд программиста (английский) 2-е издание
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Анонимный Союз и Структура в C
- C | Структура и Союз | Вопрос 1
- C | Структура и Союз | вопрос 2
- C | Структура и Союз | Вопрос 4
- C | Структура и Союз | Вопрос 5
- C | Структура и Союз | Вопрос 6
- C | Структура и Союз | Вопрос 7
- C | Структура и Союз | Вопрос 10
- C | Структура и Союз | Вопрос 9
- C | Структура и Союз | Вопрос 8
- C | Структура и Союз | Вопрос 10
- Разница между структурой и объединением в C
- Вывод программ на C ++ | Комплект 41 (Структура и Союз)
- Предопределенные макросы в C с примерами
0.00 (0%) 0 votes