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