列舉在c
語言中其實是一些符號常量集。列舉定義了一些符號,這些符號的本質就是int
型別的常量,每個符號和乙個常量繫結。這個符號就表示乙個自定義好的乙個識別碼,編譯器對列舉的認知就是符號常量所繫結的那個int
型別的數字。
例如可以使用數字1、2、3、4、5、6、7來代表周一到週末,但是純數字並不直觀,這個時候就可以用列舉:
enum days
1.分別定義型別和變數
// 定義列舉型別
enum color
;//定義列舉變數
enum color a=blue;
注意點:
2.定義型別的同時定義變數
enum colora,b;
注意點:
3.列舉型別名color
是可要可不要的,也就是說2裡面的**也可以這樣寫:
enum
a,b;
注意點:
4.使用typedef
定義列舉型別
typedef
enum
color;
5.使用typedef
定義列舉型別並在後面使用別名進行變數定義
typedef
enum colora;
兩個不同的結構體型別中成員名可以一樣,但是兩個enum
中的成員名不可以相同,這是因為在結構體中,訪問乙個成員的方法是結構體名.成員名,但是enum
中直接就是成員名,因此如果兩個列舉型別中成員名一樣,編譯器無法分辨出到底該訪問哪乙個列舉中的成員。
c
語言沒有列舉是可以的,因為使用列舉其實就是對0、1等int
型數字進行符號化編碼,這樣的好處就是程式設計時可以不用看數字而直接看符號。符號的意義是顯然的,一眼可以看出,而數字所代表的含義則需要去看文件或者注釋。
巨集定義的目的和意義是:不用數字而用符號。從這裡可以看出:巨集定義和列舉有內在聯絡。巨集定義和列舉經常用來解決類似的問題,他們倆基本相當可以互換,但是有一些細微差別。
列舉是將多個有關聯的符號封裝在乙個列舉中,而巨集定義是完全散亂的,也就是說列舉其實是多選一。
當我們要定義的常量是乙個有限集合時(譬如一星期有7天,譬如乙個月有31天,譬如一年有12個月····),最適合用列舉。(其實巨集定義也行,但是列舉更好)在不能用列舉的情況下(定義的常量符號之間無關聯,或者無限的)用巨集定義。
c語言 自定義型別
struct stu 分號不能丟 匿名結構體型別 struct x struct a 20 p p x 非法的操作,上面倆種完全是不同的宣告 struct node 結構體的自引用 struct node n1 null 直接初始化 struct node n2 null 結構體巢狀初始化 先來看下...
C語言自定義型別
在學習c語言的時候,它有很多的自定義型別,例如 結構體,列舉,聯合。這些型別在我們的日常使用的時候,或多或少的都會遇見到,下面就系統的介紹一下這幾種型別。一.結構體 1.結構體型別的宣告 通俗點來說,結構就是一些值的集合,這些值稱為成員變數,結構體的每個成員可以是不同型別的成員變數。如下所示 str...
C語言中的自定義函式
c語言中可以使用系統函式也可以使用自己的函式,就是自定義函式 自定義函式分為四種 第一種 無參無返回值的 函式的宣告 void sayh 函式的實現 void sayh 第二種 有引數無返回值 函式的宣告 void pxsbx int c,int k 函式的實現 void pxsbxx int c,...