C語言練習筆記 聯合體(共用體)

2021-09-29 08:06:33 字數 1548 閱讀 8489

聯合體 union 是乙個能在同乙個儲存空間儲存不同型別資料的型別。

聯合體所佔的記憶體長度等於其最長成員的長度,也有叫做共用體。

聯合體雖然可以有多個成員,但同一時間只能存放其中一種。

#include

#include

#include

#pragma warning(disable:4996)

union a

;int main (

)

輸出結果:

從上述結果可以看出,聯合體a 中三個成員共享乙個記憶體; 但是這樣使存在缺點的,如下所示:

#include

#include

#include

#pragma warning(disable:4996)

union a

;int main (

)

輸出結果:

從上述結果可以看出,一旦將a1設定為0,則a3的值也變為0;我們可以列印三個變數的位址,看是否一致:

#include

#include

#include

#pragma warning(disable:4996)

union a

;int main (

)

輸出結果:

從上面結果可以看出,三個成員變數位址相同,證明是在同一塊記憶體裡。

#include

#include

#include

#pragma warning(disable:4996)

union a

;int main (

)

輸出結果:

從上述結果可以看出,a1的值並沒有變成0,而只是最後兩位變成了0,這就和 union a 中定義的變數型別有關了,a1是int型,4個位元組,佔8個bit; a3是char 型,1個位元組,佔2個bit。所以只會將後兩位置0。

注意:聯合體**現指標的話,一定要注意使用方式,例如下面的使用方式就是錯誤的:

#include

#include

#include

#pragma warning(disable:4996)

union a

;int main (

)

C 聯合體(共用體)

所佔的空間大小為成員中所佔空間最大的 union 聯合名 union a 使用該聯合體模板建立兩個變數a,b union a a,b union perdata a,b union a,b typedef int length length為int 型別的別名 length a,b a,b為int ...

C語言union 聯合體 共用體

一直以來,union都是個很少用到的東西,對於這些不常用的結構往往記不住。這次看書又看到了,還是學習一下吧。一般在windows api的一些資料結構中才能看到這個union,其實並不複雜。本質上來說和結構體是一樣的,但是從包裝的角度來看有差異。1 union中可以定義多個成員,union的大小由最...

C語言union 聯合體 共用體

一直以來,union都是個很少用到的東西,對於這些不常用的結構往往記不住。這次看書又看到了,還是學習一下吧。一般在windows api的一些資料結構中才能看到這個union,其實並不複雜。本質上來說和結構體是一樣的,但是從包裝的角度來看有差異。1 union中可以定義多個成員,union的大小由最...