2016-02-28 44 views
-3

是否可以聲明一個聯合體數組?聯盟數組是否有效或無效?

如果是,它與普通的結構數組有什麼不同?

+6

你試過了嗎? –

+5

@MartinJames「只是嘗試」並不是一個很好的方式來查明事物在C中是否合法。畢竟,未定義的行爲通常看起來像你期望的那樣工作,直到它沒有。 – fuz

+0

如果編譯器允許聲明聯合數組,那麼這種結構很可能會導致UB。 –

回答

4

是的,這是可能的。從技術上講,沒有什麼區別,它只是連續的一塊內存,每個元素代表一個聯合。這與結構或任何其他類型完全相同。每個元素的大小與一個聯合或結構的大小相同。

7

是的,很可能(但也許不尋常)。

struct與工會的區別在於struct包含其所有成員,而union一次只包含一個成員。

陣列成員總是足夠大以容納最大的聯盟成員。