自定義型別變數 列舉 聯合

2021-10-04 21:03:14 字數 1282 閱讀 2043

聯合列舉顧名思義就是一一枚舉。

把可能的取值一一枚舉。

比如我們現實生活中:

一周的星期一到星期日是有限的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 變數列表,可以省略,建議省略...