概念:
聯合(union)是一種資料型別,它能在同乙個記憶體空間中儲存不同的資料型別(不是同時儲存)。
其典型的用法是,設計一種表以儲存既無規律、事先也不知道順序的混合型別。使用聯合型別的陣列,其中的聯合都大小相等,每個聯合可以儲存各種資料型別。
定義:建立聯合和建立結構的方式相同,需要乙個聯合模板和聯合變數。
可以用乙個步驟定義聯合,也可以用聯合標記分兩步定義。
下面是聯合體的三種定義方式:
1. 用聯合標記分兩步定
union hold
;union hold fit;
(2,3步其實是一種型別)
2. 乙個步驟定義聯合
union hold //hold可以省略
fit;
3. 乙個步驟定義聯合
union
fit;
初始化與賦值
3 種初始化的方法:
1. 把乙個聯合初始化為另乙個同型別的聯合;
2. 初始化聯合的第1個元素;
3. 或者根據c99標準,使用指定初始化專案。
union hold vala;
vala.letter='r'; //賦值
union hold valb = vala;
union hold valc = ;
union hold vald = ; //指定初始化專案
使用:成員運算子 .
成員運算子和結構或聯合名稱一起使用,用來指定結構或聯合的成員。
間接成員運算子 ->
間接成員運算子和指向結構或聯合的指標一起使用,用來指明結構或聯合的成員。
C陣列 結構體 聯合體快速初始化
背景 c89標準規定初始化語句的元素以固定順序出現,該順序即待初始化陣列或結構體元素的定義順序。c99標準新增指定初始化 designated initializer 即可按照任意順序對陣列某些元素或結構體某些成員進行選擇性初始化,只需指明它們所對應的陣列下標或結構體成員名。gnu c將其作為c89...
乙個通用類,用於解決聯合體初始化問題
c 早期版本中,結構中的聯合體,在初始化時,總有很多支援不佳的編譯器,這兒提供乙個通用類,用於實現聯合體的初始化 class unionvalue base value public explicit unionvalue uint8 t u8 explicit unionvalue uint16 ...
(C C 基礎)結構體 初始化 賦值 定義
首先介紹一下初始化 賦值 定義 宣告這四個概念。初始化 建立變數並給它賦初值。初始化和賦初值不同。初始化 帶指定初始值的定義。乙個程式中,乙個變數只能初始化一次。如 int i 0 賦值 擦除物件的當前值並用新值替代,在乙個程式中,乙個變數可以多次賦值。定義 用來為變數分配記憶體空間,還可以為變數指...