C語言關鍵字union在資料傳輸中的妙用

2021-10-02 15:21:38 字數 611 閱讀 3589

c語言關鍵字union,通常稱為聯合體或者共用體,其特性就是所有成員擁有相同的起始位址;

在資料傳輸的應用中,假如我們需要將乙個具體的數值傳送到對端,有很多的方法可供我們選擇,比如把數值轉換成字串然後傳輸,對端再將字串解析成數值是一種方法,其缺點是傳送端傳送數值前需要將數值格式化成字串,接收端接收後需要通過相應操作將字串還原成數值,優點就是除錯方便,一眼就能看出傳送端傳送的資料是否正確;但有沒有不需要多餘中間過程的方法呢,答案肯定是有的,今天要介紹的就是使用聯合體來進行數值傳輸。

先看下面的一段**:(假設應用在32位機器)

typedef union u_t;
這裡聯合體內兩個成員都佔四個位元組,擁有相同的起始位址,在記憶體中使用的同一片記憶體,我們都知道資料的儲存方式是0和1,那麼其中乙個成員有了值後,其記憶體裡面的01編碼對於所有成員來說都是一樣的,只是通過不同的解析方式去取值結果不一樣而已,假設我們要將1.2345這個浮點數傳輸到對端,只需要給其中的成員f賦值為1.2345,將成員b傳送到對端,對端接收到成員b,取出成員f便得到了傳輸的數值,這樣不需要任何其它的轉換及中間過程,非常方便,而且不用擔心浮點數的精度問題,唯一需要注意的就是傳送端和接收端的大小端模式。

C語言union關鍵字

union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個資料成員中的 一種 而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有相同的起始位址。例子如下 union statemachin...

C語言union關鍵字

今天看union,不是很記得其作用了。本文摘自c語言中文網,解釋的很好,學到了東西。union 維護足夠的空間來置放多個資料成員中的 一種 而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有相同的起始位址。例子如下 uni...

C語言union關鍵字

union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個資料成員中的 一種 而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有相同的起始位址。例子如下 union statemachin...