所謂列舉是指將變數的值一一枚舉出來,變數只限於列舉出來的值的範圍內取值。
宣告列舉型別的一般形式為
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 會在顯示的字串末尾自動加上...