Недавно я наткнулся на замечательную книгу о структурах данных " Структуры данных с использованием C " (c) 1991 г., в местной книжной библиотеке, продаваемой за всего $ 2 . Как видно из названия книги, в книге рассматриваются структуры данных с использованием языка программирования C.
Я получил книгу, зная, что она устарела, но, вероятно, будет содержать много продвинутых тем по Си, с которыми я больше не столкнусь.
Конечно же, в течение 5 минут я нашел что-то, чего я не знал о C. Я наткнулся на раздел, в котором говорилось о ключевом слове union
, и я понял, что никогда не использовал его и никогда не видел ни одного кода, который бы это делал. Я был благодарен за изучение чего-то интересного и быстро купил книгу.
Для тех из вас, кто не знает, что такое союз, в книге используется хорошая метафора для объяснения:
Чтобы полностью понять концепцию
союз, необходимо изучить его
реализация. Структура может быть
рассматривается как дорожная карта в области
объем памяти. Это определяет, как память
быть истолкованным. Союз обеспечивает
несколько разных дорожных карт для
та же область памяти, и это
ответственность программиста
определить, какая дорожная карта находится в текущем
использовать. На практике компилятор
выделяет достаточно места для хранения
содержат самый большой член
союз. Это дорожная карта, однако,
который определяет, как это хранилище
быть интерпретированным.
Я мог бы легко придумать надуманные ситуации или взломать, где я бы использовал Союз. (Но меня не интересуют надуманные ситуации или хаки ...)
Вы использовали или видели реализацию, в которой использование Union решило проблему ** более элегантно **, чем не использование Union?
Добавлен бонус, если вы включите краткое объяснение того, почему использование объединения было лучше / проще, чем не использование объединения.