共用體的定義格式爲:
union 共用體名{
成員列表
};
結構體和共用體的區別在於:結構體的各個成員會佔用不同的內存,互相之間沒有影響;而共用體的所有成員佔用同一段內存,修改一個成員會影響其餘所有成員。
介紹下要應用的場景,下位機採集到的數據類型是float型,需要通過串口發送到上位機然後再進行計算得到結果,由於通信協議的中每個字節都是uint型,比較笨的辦法是把float型通過計算轉換成整型再傳輸,但是這樣以來精度受到了影響,每次要傳輸的內容增加,也增加了運算,比較麻煩;這個時候用共用體真實爽翻了;
定義共用體
typedef union
{
uint8_t numChar[4];
float numFloat;
}FloatUnion;
float類型佔用4個字節,numChar[4]也是4個字節,他兩佔用同一段內存,在最底層計算機存儲的內容是一樣的。非常贊