Можно ли объявить массив союзов?Является ли массив союзов действительным или недействительным?
Если да, то как он отличается от обычного массива структур?
Можно ли объявить массив союзов?Является ли массив союзов действительным или недействительным?
Если да, то как он отличается от обычного массива структур?
Да, это возможно. Технически нет никакой разницы, это просто непрерывный кусок памяти с каждым элементом, представляющим один союз. Это точно так же, как для структуры или любого другого типа. Каждый элемент имеет тот же размер, что и размер одного объединения или структуры.
Да, очень возможно (но, возможно, необычно).
Разница между struct
и объединением состоит в том, что struct
содержит все его элементы, а union
содержит только один член за раз.
Элементы массива всегда будут достаточно большими, чтобы удерживать самый большой член объединения.
УДАЛИТЬ ЭТО? –
@MartinJames «просто попробуйте» - это не очень хороший способ узнать, законны ли вещи в C. В конце концов, неопределенное поведение часто работает так, как вы ожидаете, пока это не произойдет. – fuz
Если компилятор разрешает объявлять массив union, то МНОЧКО менее вероятно, что такая структура приведет к UB. –