一、什麼是聯合體(共用體)
聯合體是一種特殊的資料型別,允許您在相同的記憶體位置儲存不同的資料型別。您可以定義乙個帶有多成員的共用體,但是任何時候只能有
乙個成員
帶有值。
共用體提供了一種使用相同的記憶體位置的有效方式。
二、聯合體定義
union
變數名;
union
data;
//聯合體變數,變數名為data
union mydata
;//定義了乙個聯合體型別,為union mydata
union mydata data;
//定義了乙個mydata的聯合體變數,變數名為data
typedef
union mydata
;//定義了乙個聯合體型別,為union mydata,重新命名為mydata
mydata data;
//定義了乙個mydata的聯合體變數,變數名為data
三、聯合體的使用
使用定義3中定義的data
變數
//共享同乙個記憶體位址
data.a =10;
//a賦值,會影響f的值
printf
("%d, %f\n"
, data.a, data.f)
;data.f =10;
//f賦值,會影響a的值
printf
("%d, %f\n"
, data.a, data.f)
;
列印輸出:
10
0.000000
1092616192
10.000000
以上示例,data.a
和data.f
共用一段記憶體空間,給a賦值,則f同樣受到影響;給f賦值則a的值也會變化。
大端模式,是指資料的高位元組
儲存在記憶體的低位址
中,而資料的低位元組
儲存在記憶體的高位址
中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;這和我們的閱讀習慣一致。
小端模式,是指資料的資料高位元組
儲存在記憶體的高位址
中,而資料的低位元組
儲存在記憶體的低位址
中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低。
1
在大端小端模式下的儲存方式:
typedef
union
myunion;
myunion u;
u.a =1;
printf
("%d, %d\n"
, u.a, u.c)
;
上述如果列印1則為小端
、如果列印0則為大端
。
四、列舉
是乙個被命名的整型常數的集合。列舉在日常生活中很常見,例如表示星期的sunday、monday、tuesday、wednesday、thursday、friday、saturday就是乙個列舉。
typedef
enum
week;
week week = sunday;
//定義和賦值
printf
("%d, %d, %d\n"
, sunday, monday, friday)
;// 列舉被定義後,可以當做乙個常量使用
switch
(week)
列印:
0, 1, 5
星期天
列舉和聯合體
列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉出來。比如,現實生活中 列舉的定義 enum day 星期 enum 性別 enum color 顏色 以上定義的 enum day,enum enum color 都是列舉型別。中的內容是列舉型別的可能取值,也叫列舉常量。這些可能取值都是有值的,...
列舉和聯合體
1 什麼是列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉。enum color 顏色 以上定義的 enum color 是列舉型別。中的內容是列舉型別的可能取 值,也叫列舉常量 2 列舉的值enum color 顏色 3 列舉的優點 1 增加 的可讀性和可維護性 2 和 define定義的識別...
列舉 聯合體 遞迴
一.列舉 1.列舉是乙個型別 乙個常量陣列 2.關鍵字 enum 1 enum week 3.宣告乙個enum week w 那麼sizeof w 的大小是4 w可以等於以上七個裡面中的任意乙個 只能在範圍之內賦值 預設情況下 不賦值第乙個從0開始 mon 0 tue 1 以此類推 但例如對thu進...