C語言 自定義型別 列舉 聯合

2021-08-16 12:27:11 字數 1638 閱讀 7227

c語言的自定義型別除了結構體之外,還有列舉,聯合。

列舉

列舉型別的定義

enum ***//性別

;enum color//顏⾊

;

以上定義的 enum *** , enum color 都是列舉型別。

中的內容是列舉型別的可能取值,也叫 列舉常量 。這些可能取值都是有值的,預設從0開始,依次遞增1,當然在定義的時候也可以賦初值。

例如:

enum

color//顏色

;

列舉的使用:

enum color//顏⾊色

;enum color clr = green;/* 只能拿列舉常量量給列舉變數量賦值

才不不會出現型別的差異。*/

列舉的優點

增加**的可讀性和可維護性

與#define定義的識別符號相比,列舉有型別檢查,更加嚴謹。

防止命名汙染(封裝)

便於除錯

使用方便,一次可以定義多個常量。

聯合
也是一種特殊的自定義型別,這種型別定義的變量也包含一系列的成員,這些成員公用同一塊空間(所以聯合也叫共用體)。

比如:

//聯合型別的宣告

union un

;//聯合變數的定義

union un un;

//計算聯合變數的大⼩

printf("%d\n", sizeof(un));

聯合的成員是共用同一塊記憶體空間的,這樣乙個聯合變量的大小,至少是最大成員的大小。

union a

;int main()

else

}

x.j = 1,大端儲存為00 00 00 01,如果x.i = 0,說明它的儲存形式的確是00 00 00 01,如果是小端,那麼就是反的,儲存為01 00 00 00 ,那麼x.i = 1

聯合大小的計算

聯合的大小至少是最大成員的大小。

當最大成員大小不是最大對齊數整數倍的時候,就要對齊到最大對齊數的整數倍。

聯合與結構體的巧妙使用:

//將long型別的ip位址,轉為點分十進位制的表示形式

C語言 自定義型別 結構體 列舉 聯合

二 列舉 三 聯合 1.結構體型別建立 struct stu 定義乙個學生結構體 分號不能丟 特殊的宣告 在宣告結構的時候,可以不完全的宣告 比如 匿名結構體型別 struct x struct a 20 p p x 非法,編譯器會把上面的兩個宣告當成完全不同的兩個型別 結構的不完整宣告 struc...

C語言 自定義型別 結構體,列舉,聯合

結構 結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。struct tag variable list 宣告定義後所定義的成員變數 描述乙個學生 struct student 結構體的自引用 結構正確的自引用方式 struct node 2 typedef struct ...

C語言 自定義型別 結構體,列舉,聯合

結構體的基礎知識 結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。結構體的宣告 例如描述乙個學生 struct stu s s為變數列表 typedef struct stu s,p s,p為型別在宣告結構的時候,可以不完全的宣告。匿名結構體型別 struct x str...