1. 程式人生 > >C語言中struct與union的區別是什麼?

C語言中struct與union的區別是什麼?

相同

struc(結構體)與union(聯合體)都是符合結構,由多個不同的資料型別成員組成。

不同

1. 佔用地址空間

  • union

union所有成員共用一塊地址空間,即聯合體只存放了一個被選中的成員。所有成員不能同時佔用記憶體空間,它們不能同時存在,所以一個聯合型變數的長度等於其最長的成員的長度。

  • struct

struct中所有成員佔用空間是累加的,其所有成員都存在,不同成員會存放在不同的地址。在計算一個結構體變數的總長度時,其記憶體空間大小等於所有成員長度的和(需要考慮位元組對齊)。

2. 賦值

  • union

對不同成員賦值,將會對它的其他成員重寫,原來成員的值就不存在了。

  • struct

對結構體的不同成員賦值是互不影響的。