星期二, 3月 07, 2017

[ C ] Union 和 Struct 差異



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

沒有留言: