聯合體型別,變數成員共用同一記憶體,同一時刻只能儲存一個成員的資料。
以1個4位元組資料,傳遞r\g\b為例
#include<stdint.h> #include<iostream> int main() { uint32_t myV; //用於模擬值傳遞 //寫 { union { struct { uint32_t r : 8; //注意與“要傳遞的值”同型別,防止新開闢1個位元組造成的位不連續 uint32_t g : 8; uint32_t b : 8; }_s; uint32_t v = 0; //要傳遞的值 }_u; _u._s.r = 120; _u._s.g = 130; _u._s.b = 140; std::cout << _u.v << std::endl; myV = _u.v; } //讀 { union { struct { uint32_t myR : 8; uint32_t myG : 8; uint32_t myB : 8; }myS; uint32_t rgb = 0; }myU; //模擬值傳遞 myU.rgb = myV; //獲取r\g\b unsigned char r1 = myU.myS.myR; unsigned char g1 = myU.myS.myG; unsigned char b1 = myU.myS.myB; std::cout << (int)r1 << " " << (int)g1 << " " << (int)b1 << std::endl; } }
陣列、結構體、聯合體、列舉型別、型別轉換 - 夕西行 - 部落格園 (cnblogs.com)
高資料型別存取低資料型別,如int儲存uchar - 夕西行 - 部落格園 (cnblogs.com)