Я прохожу через книгу практического программирования программирования О'Рейли и прочитал книгу K & R на языке программирования C, и я действительно испытываю трудности с пониманием концепции союзов.В чем смысл профсоюзов в C?
Они берут размер самого большого типа данных, который заставляет их ... и последний назначенный один перезаписывает остальные ... но почему бы просто не использовать/освобождать память по мере необходимости?
В книге упоминается, что она используется в общении, где вам нужно установить флаги того же размера; и на веб-сайте googled, что он может устранить куски памяти нечетного размера ... но может ли он использоваться в современном, не встроенном пространстве памяти?
Есть ли что-то лукавое, что вы можете с ним сделать и регистры процессора? Это просто удержание от более ранней эпохи программирования? Или это, как и печально известный goto, по-прежнему обладает мощным использованием (возможно, в узких пространствах памяти), что заставляет его стоять?
Посмотрите на [Type-каламбурная] (http://en.wikipedia.org/wiki/Type_punning). – Mysticial
Это может быть полезно в ситуациях, когда вам нужно преобразовать структуру в ее двоичные значения (например, char []), не используя хаки указателей. –
Возможный дубликат [C/C++: Когда кто-нибудь будет использовать союз? Это в основном остаток от C дней?] (Http: // stackoverflow.com/questions/4788965/cc-when-would-any-use-a-union-is-it-basic-a-remnant-from-the-c-only) –