Union和Struct都是可以存放member的資訊,
但差異是,
Struct可以存全部member的資訊,
而union只能存一個。
我宣告同樣的內容在struct man和union woman裡,
char name; //1 byte
int age; //4 byte
long weight; //8 byte
而一樣的assign值給他們,
從結果可以看出struct可以印出全部的值。
而union只能印出最後一個被assign的值。
因為struct對每個member都有一塊空間給他,
而union只有一塊空間給其中一個會員,
所以在union裡如果大家同時去寫,
就會一直重覆的覆蓋過去。
從他們size來看,
struct man是佔了 1+4+8 = 13 ,所以是分到16 byte。
union woman是佔了8 byte,因為他宣告member裡其中之一需要最大的空間。
而最大的是long的大小。
如果你去拿union沒被assign值的member來用,很可能會出現錯誤。
SourceCode
Ref
沒有留言:
張貼留言