在c語言中 有 聯合體這種資料結構,雖然用的很少,但是也會用到,那麼聯合體是一種什麼結構呢?
當多個資料需要共享記憶體或者多個資料每次只取其一時,就可以利用聯合體,聯合體的定義是這樣的:
(1)聯合體是一種結構。
(2)它的所有成員相對於基位址的偏移量都是0.
(3)此結構空間要大到足夠容納最寬的成員。
(4)其對其方式適合其中所有成員。
具體理解:
要特別注意 「共享」二字,也就是聯合體中的所有成員是共享記憶體的,所以取資料時只能取其一,聯合體不同於結構體,結構體是成員相加,而聯合體是「共享」記憶體,舉例如下:
union u
;
其中s佔9個位元組,n佔4個位元組,d佔8個位元組,,f佔4個位元組,因此此共同體至少需要佔9個位元組空間,然而還要考慮對齊,所以這個結構體需要占用16個位元組,因為必須是8的倍數。
那麼結構體有什麼用呢?
目前我接觸到的乙個很巧妙的用途就是用於資料型別轉換,,例如共同體如下
union u1
;
那麼如果向u1.f中存乙個浮點數,s中自動就是該浮點數轉換的4位元組,用起來還是比較巧妙的。
C語言中的聯合體union
在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也 可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記...
C語言中的聯合體union
在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也 可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記...
C語言中的聯合體union
在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記憶...