跳转至

聯合體

聯合體(union)是特殊的類類型,它在一個時刻只能保有其一個非靜態數據成員。

聯合體在 2023 年正式被加入 NOI 大綱入門級中。

定義聯合體

聯合體聲明的類説明符與類或 結構體 的聲明相似:

1
2
3
4
union MyUnion {
  int x;
  long long y;
} x;

聯合體的定義與結構體類似。按照上述定義,MyUnion 同樣可以當作一種自定義類型使用。名稱 MyUnion 可以省略。

訪問/修改成員元素

與結構體類似,同樣可以使用 變量名.成員名 進行訪問。

聯合體所佔用的內存空間大小 不小於 其最大的成員的大小,所有成員 共用內存空間與地址。當一個成員被賦值,由於內存共享,該聯合體中的其他成員都會被覆蓋。即同一時刻聯合體中只能保存一個成員的值。

聯合體的更多用法可以參見 cppreference:聯合體聲明