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