2016-02-28 5 views
-3

Можно ли объявить массив союзов?Является ли массив союзов действительным или недействительным?

Если да, то как он отличается от обычного массива структур?

+6

УДАЛИТЬ ЭТО? –

+5

@MartinJames «просто попробуйте» - это не очень хороший способ узнать, законны ли вещи в C. В конце концов, неопределенное поведение часто работает так, как вы ожидаете, пока это не произойдет. – fuz

+0

Если компилятор разрешает объявлять массив union, то МНОЧКО менее вероятно, что такая структура приведет к UB. –

ответ

4

Да, это возможно. Технически нет никакой разницы, это просто непрерывный кусок памяти с каждым элементом, представляющим один союз. Это точно так же, как для структуры или любого другого типа. Каждый элемент имеет тот же размер, что и размер одного объединения или структуры.

7

Да, очень возможно (но, возможно, необычно).

Разница между struct и объединением состоит в том, что struct содержит все его элементы, а union содержит только один член за раз.

Элементы массива всегда будут достаточно большими, чтобы удерживать самый большой член объединения.

Смежные вопросы