聯合列舉顧名思義就是一一枚舉。
把可能的取值一一枚舉。
比如我們現實生活中:
一周的星期一到星期日是有限的7天,可以一一枚舉。 性別有:男、女、保密,也可以一一枚舉。 月份有12個月,也可以一一枚舉顏色也可以一一枚舉。
enum day//星期
;
與結構體定義相似,不同是成員是被「,」隔開的。
{}中的內容是列舉型別的可能取值,也叫 列舉常
量 。列舉和巨集定義一樣,都是標記乙個數字作為常量,但是列舉可以定義多個,#define只能定義乙個;在沒有對其列舉常量賦初值時,預設從0開始依次連續。
enum day//星期
其他未設定規定常量的列舉成員,均從設定出開始依次遞增。
列舉的型別都是整型,所以可以給列舉型別變數賦值,但無意義。
我們可以使用 #define 定義常量,為什麼非要使用列舉? 列舉的優點:
增加**的可讀性和可維護性
和#define定義的識別符號比較列舉有型別檢查,更加嚴謹。
防止了命名汙染(封裝)
便於除錯
使用方便,一次可以定義多個常量
列舉主要是用乙個讀起來易懂的詞來代替特定的數字,使**淺顯易懂。
聯合也是一種特殊的自定義型別
這種型別定義的變數也包含一系列的成員,特徵是這些成員公用同一塊空間(所以聯合也叫共用體)。
//聯合型別的宣告
union un
;//聯合變數的定義
union un un;
//計算連個變數的大小
printf
("%d\n"
,sizeof
(un)
);
我們可以發現上述例子中,un的大小為4位元組,原因是聯合體內成員共用空間,只需要讓其開闢內部成員最大的型別大小就可以了。
例如
union un1
;union un2
;//下面輸出的結果是什麼?
printf
("%d\n"
,sizeof
(union un1));
printf
("%d\n"
,sizeof
(union un2)
);
結果是:81 自定義型別(結構,列舉,聯合)
eg struct tag tag結構體標籤 char name 10 名字 int age 年齡 char gender 3 性別 分號不能丟 在結構體宣告的時候,可以省略結構體標籤tag 2.結構體的成員 標量,陣列,指標,甚至其他結構體 3.結構體成員的訪問 1.結構體是通過點操作符 訪問的,...
C語言 自定義型別 列舉 聯合
c語言的自定義型別除了結構體之外,還有列舉,聯合。列舉 列舉型別的定義 enum 性別 enum color 顏 以上定義的 enum enum color 都是列舉型別。中的內容是列舉型別的可能取值,也叫 列舉常 這些可能取值都是有值的,預設從0開始,依次遞增1,當然在定義的時候也可以賦初值。如 ...
自定義型別 結構體 列舉 聯合
結構體 所謂結構體,就是將一大堆值放在一起,建立乙個新的型別,這些成員可以是不同型別的變數。struct tag variable list tag 要求 1.見名知意 2.可以省略 3.不建議省略 member list c語言中,不能為空 variable list 變數列表,可以省略,建議省略...