C語言union 聯合體 共用體

2021-07-05 06:23:37 字數 498 閱讀 5178

一直以來,union都是個很少用到的東西,對於這些不常用的結構往往記不住。這次看書又看到了,還是學習一下吧。

一般在windows api的一些資料結構中才能看到這個union,其實並不複雜。本質上來說和結構體是一樣的,但是從包裝的角度來看有差異。

1、union中可以定義多個成員,union的大小由最大的成員的大小決定。 

2、union成員共享同一塊大小的記憶體,一次只能使用其中的乙個成員。 

3、對某乙個成員賦值,會覆蓋其他成員的值(也不奇怪,因為他們共享一塊記憶體。但前提是成員所佔位元組數相同,當成員所佔位元組數不同時只會覆蓋相應位元組上的值,比如對char成員賦值就不會把整個int成員覆蓋掉,因為char只佔乙個位元組,而int佔四個位元組)

4、聯合體union的存放順序是所有成員都從低位址開始存放的。

下面看乙個簡單的**:

#include

typedef uniondemo;

int main(int argc, char **argv)

C語言union 聯合體 共用體

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

C C語言union 聯合體 共用體

2011 11 14 11 10 23 分類 c語言 舉報 字型大小訂閱 我的 書 一直以來,union都是個很少用到的東西,對於這些不常用的結構往往記不住。這次看書又看到了,還是學習一下吧。一般在windows api的一些資料結構中才能看到這個union,其實並不複雜。本質上來說和結構體是一樣的...

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 ...