C語言中的自定義型別 enum列舉

2021-10-16 12:38:07 字數 1343 閱讀 4986

列舉在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,...