c 學習之聯合體union

2021-10-02 19:33:30 字數 686 閱讀 6728

特點:共享記憶體,長度由最大位元組型別決定

例如:

union data

;

data在64位作業系統下就是8位元組,由最長double決定

data user;

std::cout << sizeof(data) << std::endl;

結果為8是顯然的

然後看一下各個成員的記憶體

std::cout << &user.ihp << std::endl;

std::cout << &user.fhp << std::endl;

std::cout << &user.shp << std::endl;

結果如下:

結論:他們共享一8位元組記憶體

c++17標準中,匿名也已不是問題,與結構體的匿名類似,例如下:

union 

ls;

適用情形:只需臨時使用一次的聯合體,使用案例

struct data

ls; double db;

};

union聯合體學習

union,中文名 聯合體 共用體 在某種程度上類似結構體struct的一種資料結構,共用體 union 和結構體 struct 同樣可以包含很多種資料型別和變數。不過區別也挺明顯 結構體 struct 中所有變數是 共存 的 優點是 有容乃大 全面 缺點是struct記憶體空間的分配是粗放的,不管...

union聯合體學習

union,中文名 聯合體 共用體 在某種程度上類似結構體struct的一種資料結構,共用體 union 和結構體 struct 同樣可以包含很多種資料型別和變數。不過區別也挺明顯 結構體 struct 中所有變數是 共存 的 優點是 有容乃大 全面 缺點是struct記憶體空間的分配是粗放的,不管...

c語言 union聯合體

linux中聯合體union實現判斷little endian 和 big endian 大端和小端 1 聯合體的資料成員從低位元組開始對齊 2 little endian 和 big endian。little endian 和 big endian 是 cpu 存放資料的兩種不同順序。對於整型 ...