C語言學習與總結 第十一章 列舉(enum)

2021-10-07 07:25:10 字數 2113 閱讀 1718

所謂列舉是指將變數的值一一枚舉出來,變數只限於列舉出來的值的範圍內取值。

宣告列舉型別的一般形式為

enum 列舉型別名;
例如

enum week 

;

注意:(1) 列舉型是乙個集合,集合中的元素(列舉成員)是一些命名的整型常量,元素之間用逗號,隔開。

(2) day是乙個識別符號,可以看成這個集合的名字,是乙個可選項,即是可有可無的項。

(3) 第乙個列舉成員的預設值為整型的0,後續列舉成員的值在前乙個成員上加1。

(4) 可以人為設定列舉成員的值,從而自定義某個範圍內的整數。

(5) 列舉型是預處理指令#define的替代。

(6) 型別定義以分號;結束。

列舉型別也是資料型別,如int,float一般,那麼可以用enum對變數進行宣告;列舉型別變數的宣告方式一般有:

(1)型別的定義和變數的宣告分開

enum week 

;enum week day1;

enum week day2;

//day1,day2都是enum week型別的

(2)型別定義和變數宣告同時進行

enum week day;

//day就是enum week型別的

(3)利用typedef

typedef

enum week week;

//week是enum week的別名

week day1, day2;

//day1,day2就是week型別的,亦即enum week型別

注意:第一行或第三行的week可以省略乙個;

(1)先宣告變數,再對變數賦值

#include

enum week

;int

main()

(2)宣告變數的同時賦值

#include

enum week

;int

main()

(3)定義型別的同時宣告變數,然後對變數賦值

#include

enum week day1, day2;

intmain()

(4)定義型別,宣告變數,賦值同時進行(此時的變數都為全域性變數)

#include

enum week day1 = mon, day2 = wed;

intmain()

注意:對列舉型別變數賦整數值時,要進行型別轉換,例如

#include

enum week day1, day2, day3;

intmain()

列舉型別所佔記憶體與int一致:

switch case關鍵字後面必須是整數或者結果為整數的表示式,不能是變數,但是在enum型別中,mon,tues等這行名字被替換成整數,所以可以放在case後面

#include

intmain()

day;

scanf_s

("%d"

,&day)

;switch

(day)

return0;

}

mon、tues、wed 這些名字都被替換成了對應的數字。這意味著,mon、tues、wed 等都不是變數,它們不占用資料區(常量區、全域性資料區、棧區和堆區)的記憶體,而是直接被編譯到命令裡面,放到**區,所以不能用&取得它們的位址。這就是列舉的本

C語言學習 第十一次作業總結

兩次的作業,都是和指標有關。從第一次的作業開始,我就多次讓同學們思考這個問題 為什麼要用指標,為什麼在函式的形參中要使用指標。如果能夠想明白這2個問題,那麼同學們應該會指標的了解就差不多足夠了,剩下的,就是充分的 練習。其實,總的來說,指標這一概念本身很簡單,理解起來也並不複雜 指標是乙個變數,內部...

C 學習筆記 第十一章總結

c 入門經典第七期 第十一章集合 比較和能換書後總結 集合是可以包含其他類的例項的類。要定義集合,可以從collectionbase中派生,或者自己實現集合介面。例如ienumerable icollection和ilist。一般需要為集合定義乙個索引器,以使用collection index 語法...

C語言 第十一章第十二章

定義 字串是以空字元為結尾的char型別陣列。1.字串的輸入 gets 函式 它區別於getchar 函式,getchar 是輸入單個字元,gets 是輸入字串。區別於scanf s a 函式,scanf 只能讀取乙個單詞,gets 讀取整行輸入,直到遇到換行符。gets 會在顯示的字串末尾自動加上...