C語(yǔ)言編程第09章 用戶自定義數(shù)據(jù)類型_第1頁(yè)
C語(yǔ)言編程第09章 用戶自定義數(shù)據(jù)類型_第2頁(yè)
C語(yǔ)言編程第09章 用戶自定義數(shù)據(jù)類型_第3頁(yè)
C語(yǔ)言編程第09章 用戶自定義數(shù)據(jù)類型_第4頁(yè)
C語(yǔ)言編程第09章 用戶自定義數(shù)據(jù)類型_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第9 9章章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體內(nèi)容l結(jié)構(gòu)體類型結(jié)構(gòu)體類型l結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體指針結(jié)構(gòu)體指針l使用指針處理鏈表使用指針處理鏈表l共用體類型共用體類型l枚舉類型枚舉類型ltypedeftypedef關(guān)鍵字關(guān)鍵字29.1 結(jié)構(gòu)體類型結(jié)構(gòu)體:結(jié)構(gòu)體: C C語(yǔ)言的一種語(yǔ)言的一種構(gòu)造構(gòu)造數(shù)據(jù)類型。數(shù)據(jù)類型。例:一個(gè)學(xué)生的基本信息例:一個(gè)學(xué)生的基本信息 學(xué)號(hào)學(xué)號(hào) 姓名姓名 性別性別 年齡年齡 成績(jī)成績(jī) 住址住址9.1.1 建立結(jié)構(gòu)體類型39.1.1 建立結(jié)構(gòu)體類型struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表 ;structstruct是關(guān)鍵字是關(guān)鍵字, ,不能省略

2、不能省略類型名類型名 成員名;成員名;聲明結(jié)構(gòu)體類型類型的一般形式:的一般形式:49.1.1 建立結(jié)構(gòu)體類型struct student int num; char name20; char sex; int age; float score; char addr30; 結(jié)構(gòu)體類型聲明的結(jié)構(gòu)體類型聲明的 后后面應(yīng)帶有面應(yīng)帶有 ;結(jié)構(gòu)體類型結(jié)構(gòu)體類型聲明聲明描述結(jié)描述結(jié)構(gòu)的組織形式構(gòu)的組織形式, ,不分配內(nèi)不分配內(nèi)存存結(jié)構(gòu)體類型一般集中放結(jié)構(gòu)體類型一般集中放置在一個(gè)置在一個(gè).h.h的頭文件中,的頭文件中,需要的時(shí)候用需要的時(shí)候用includeinclude包含該頭文件包含該頭文件59.1.2 定

3、義結(jié)構(gòu)體類型變量一、先一、先聲明聲明類型,再類型,再定義定義變量變量structstruct 結(jié)構(gòu)體名結(jié)構(gòu)體名 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; . ;structstruct 結(jié)構(gòu)體名結(jié)構(gòu)體名 變量名列表;變量名列表;一般形式:一般形式:69.1.2 定義結(jié)構(gòu)體類型變量struct student1 int num; char name20; char sex; int age; float score; char addr30; ; struct student1 stu; namenumsexagescoreaddr2字節(jié)字節(jié)2字節(jié)字節(jié)20字

4、節(jié)字節(jié)1字節(jié)字節(jié)4字節(jié)字節(jié)30字節(jié)字節(jié).結(jié)構(gòu)體是構(gòu)造類型,分量占用相鄰的存儲(chǔ)空間。例:例:79.1.2 定義結(jié)構(gòu)體類型變量二、聲明類型的同時(shí)定義變量二、聲明類型的同時(shí)定義變量一般形式:一般形式:structstruct 結(jié)構(gòu)體名結(jié)構(gòu)體名 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; . 變量名列表;變量名列表;89.1.2 定義結(jié)構(gòu)體類型變量struct student1int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 例:例:99.1.2 定義結(jié)構(gòu)體類型

5、變量三、直接定義結(jié)構(gòu)體變量三、直接定義結(jié)構(gòu)體變量struct 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; .變量名列表;變量名列表;一般形式:一般形式:用用無(wú)名結(jié)構(gòu)體無(wú)名結(jié)構(gòu)體直接定義直接定義變量只能變量只能一次一次!10說(shuō)明說(shuō)明 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量概念不同結(jié)構(gòu)體類型與結(jié)構(gòu)體變量概念不同結(jié)構(gòu)體類型結(jié)構(gòu)體類型結(jié)構(gòu)體變量結(jié)構(gòu)體變量?jī)?nèi)存分配內(nèi)存分配不分配不分配分配分配賦值、存取等賦值、存取等運(yùn)算運(yùn)算不可以不可以可以可以9.1.2 定義結(jié)構(gòu)體類型變量結(jié)構(gòu)體成員名與程序中變量名可相同,不會(huì)混淆。結(jié)構(gòu)體成員名與程序中變量名可相同,不會(huì)混淆。11 結(jié)構(gòu)體可以嵌套結(jié)構(gòu)體

6、可以嵌套9.1.2 定義結(jié)構(gòu)體類型變量129.1.3 引用結(jié)構(gòu)體變量成員(分量)運(yùn)算符,成員(分量)運(yùn)算符,優(yōu)先級(jí)最高優(yōu)先級(jí)最高引用方式:引用方式:結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名. .成員名成員名例例: s1.age=18; s2.score.math=95.5; s1.age+;strcpy(s2.addr,s1.addr);scanf(“%c”, &s1.sex);注:結(jié)構(gòu)體變量不能整體輸入輸出注:結(jié)構(gòu)體變量不能整體輸入輸出13 struct student int id; char name20; char sex; int age; struct course score; char

7、 addr30; ; struct course float math; float phys; float comp;IDName Sex AgeScoreMathPhys CompAddr9.1.3 引用結(jié)構(gòu)體變量例:對(duì)學(xué)生信息的處理。例:對(duì)學(xué)生信息的處理。149.1.3 引用結(jié)構(gòu)體變量void main( ) struct student s1,s2; gets(); gets(s1.addr); scanf(%d,%c,%d,%f,%f,%f ,&s1.id, &s1.sex, &s1.age,&s1.score.math ,&s1

8、.score.phys , &p); s2=s1; printf(n%d,%s,%c,%d,%.1f,%.1f,%.1f,%sn, s2.id,,s2.sex,s2.age,s2.score.math,s2.score.phys,p,s2.addr);15結(jié)構(gòu)體變量結(jié)構(gòu)體變量可整體賦值可整體賦值9.1.4 結(jié)構(gòu)體變量初始化形式:形式: struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 成員名;成員名; . . ;struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 結(jié)構(gòu)體變量結(jié)構(gòu)體變量=初始數(shù)據(jù)初始數(shù)據(jù) ;169.1.4

9、結(jié)構(gòu)體變量初始化例例struct date int year; int month; int day;struct date date2=2000, 12, 31, date1=2001, 1, 8 ;179.2 結(jié)構(gòu)體數(shù)組idnamesexageavscore Addr10101Li LinM1887.5Beijing10102Zhao FeiM1899Shang10104Wang MinF2078.5Yan An結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組的定義 與定義結(jié)構(gòu)體類型變量相似與定義結(jié)構(gòu)體類型變量相似 例例(1)struct student stu3; (2)struct student stu3

10、;18struct student int id; char name20; char sex; int age; float avscore; char addr30; stu13=10101, “Li Lin”, m, 18,87.5 ,“Beijing”, 10102, “Zhao Fei”, m, 18, 99 ,“Shanghai”, 10104, “Wang Min”, f, 20, 78.5 ,“Yan An” ; 9.2 結(jié)構(gòu)體數(shù)組內(nèi)層大括號(hào)內(nèi)層大括號(hào)可去掉可去掉結(jié)構(gòu)體數(shù)組的初始化結(jié)構(gòu)體數(shù)組的初始化19 struct course .; struct student s40=.

11、; main( ) int i; for(i=0; i40; i+) si.age+; printf(“%s, %c, %dn”, , si.sex, si.age);9.2 結(jié)構(gòu)體數(shù)組209.2 結(jié)構(gòu)體數(shù)組 struct course .; struct student main( ) struct student s40=.; int i; for(i=0; i40; i+) si.age+; printf(“%s, %c, %dn”, , si.sex, si.age);219.2 結(jié)構(gòu)體數(shù)組#include struct person char name20

12、;int count; leader3=“l(fā)i”,0, “zhang”,0, “l(fā)iu”,0;main( ) int i , j; char lname20; for(i=0; i10; i+) scanf(“%s”,lname); for(j=0;j3;j+) if(strcmp(lname,)=0) leaderj.count+; printf(“n”); for(i=0;isex); 若某結(jié)構(gòu)體類型若某結(jié)構(gòu)體類型指針變量指針變量p p指向同指向同類型某結(jié)構(gòu)體變量,則可以使用類型某結(jié)構(gòu)體變量,則可以使用( (* *p).p).成員變量名成員變量名或或p-p-成員變量

13、名成員變量名訪問(wèn)結(jié)構(gòu)體成員。訪問(wèn)結(jié)構(gòu)體成員。9.3.1 指向結(jié)構(gòu)體變量的指針說(shuō)明說(shuō)明 -運(yùn)算符優(yōu)先級(jí)最高運(yùn)算符優(yōu)先級(jí)最高。p-age=19;printf(“%d”,+p-age);printf(“%d”,p-age+);249.3.2 指向結(jié)構(gòu)體數(shù)組的指針struct student long id; char *name; char sex; ;void main( ) struct student s3=,*p; for(p=s; pid,p-name, p-sex);25說(shuō)明:當(dāng)結(jié)構(gòu)體指針變量說(shuō)明:當(dāng)結(jié)構(gòu)體指針變量p p指向結(jié)構(gòu)體數(shù)組指向結(jié)構(gòu)體數(shù)組某一元素后:某一元素后: p+1p+1:

14、 p-1p-1: (+p)-(+p)-成員變量:成員變量: (p+)-(p+)-成員變量:成員變量:9.3.2 指向結(jié)構(gòu)體數(shù)組的指針26指向下一個(gè)元素(如果存在)指向下一個(gè)元素(如果存在)指向上一個(gè)元素(如果存在)指向上一個(gè)元素(如果存在) 先使指針后移一個(gè)元先使指針后移一個(gè)元素,然后取出成員變量的值素,然后取出成員變量的值 先取出成員變量的值,先取出成員變量的值,再使指針后移一個(gè)元素再使指針后移一個(gè)元素三、結(jié)構(gòu)體與函數(shù)參數(shù)三、結(jié)構(gòu)體與函數(shù)參數(shù)9.3.2 指向結(jié)構(gòu)體數(shù)組的指針1.1.用結(jié)構(gòu)體變量的成員做參數(shù):用結(jié)構(gòu)體變量的成員做參數(shù):值傳遞值傳遞struct score float math;

15、 float english; float c; ;float modify1(float f) f-=10; return f;main()struct score a=80, 90.5, 85; float r1 ; r1 = modify1(a.c); printf(%f, %fn, a.c, r1);279.3.2 指向結(jié)構(gòu)體數(shù)組的指針2.2.用結(jié)構(gòu)體變量做參數(shù):用結(jié)構(gòu)體變量做參數(shù):值傳遞值傳遞struct scorefloat math; float english; float c; ;struct score modify2(struct score s)s.math-; s.e

16、nglish-; s.c-;return s;void main() struct score a=80, 90.5, 85; struct score r2; r2 = modify2(a); printf(%f, %f, %fn, a.math,a.english, a.c); printf(%f, %f, %fn, r2.math, r2.english, r2.c);289.3.2 指向結(jié)構(gòu)體數(shù)組的指針3.3.用指向結(jié)構(gòu)體變量的指針做形參,將用指向結(jié)構(gòu)體變量的指針做形參,將結(jié)構(gòu)體變量的地址值傳遞給實(shí)參。結(jié)構(gòu)體變量的地址值傳遞給實(shí)參。struct scorelong math;long

17、english;long c; ;void modify3(struct score *f) f-c=60.0;void main()struct score a=80, 90.5, 85;struct score *p=&a; modify3(p); printf(“%fn”, a.c);299.3.2 指向結(jié)構(gòu)體數(shù)組的指針struct score float math;float english;float c; ;void modify4(struct score *f, int size) int i; for(i=0; ic-;void main( ) struct scor

18、e a3=; modify4(a, 3); printf(%f, a0.c);304.4.用指向結(jié)構(gòu)體變量的指針做形參,將用指向結(jié)構(gòu)體變量的指針做形參,將結(jié)構(gòu)體數(shù)組名傳遞給實(shí)參。結(jié)構(gòu)體數(shù)組名傳遞給實(shí)參。struct score long math;long english;long c; ;void modify5(struct score f ,int size) int i;for(i=0; iid, p-score); p=p-next; 331. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. score *creat(void) score *

19、head=NULL,*p1,*p2; p2=p1=(score *)malloc(sizeof(score); scanf(%ld,%f,&p1-id,&p1-score); while(p1-id!=0) if(head=NULL) head=p1; else p2-next=p1; p2=p1; p1=(score *)malloc(sizeof(score); scanf(%ld,%f,&p1-id,&p1-score); p2-next=NULL; free( p1 ); return head; 9.4.3 動(dòng)態(tài)鏈表 建立動(dòng)態(tài)鏈表建立動(dòng)態(tài)鏈表p1指向當(dāng)

20、前待插入結(jié)點(diǎn)指向當(dāng)前待插入結(jié)點(diǎn)p2指向當(dāng)前鏈表尾結(jié)點(diǎn)指向當(dāng)前鏈表尾結(jié)點(diǎn)34 輸出鏈表輸出鏈表9.4.3 動(dòng)態(tài)鏈表void print(score *head) score *p = head; while(p!=NULL) printf(%ld, %.1fn,p-id,p-score); p=p-next; 359.4.3 動(dòng)態(tài)鏈表 指定結(jié)點(diǎn)內(nèi)容后,刪除鏈表結(jié)點(diǎn)指定結(jié)點(diǎn)內(nèi)容后,刪除鏈表結(jié)點(diǎn)score *del(score *head, long id) score *p1,*p2; if(head=NULL) printf(list nulln); return head; p1=head;

21、while( id!=p1-id & p1-next!=NULL ) p2=p1; p1=p1-next; if(id=p1-id) if(p1=head) head=p1-next; else p2-next=p1-next; free(p1); else printf(not found!n); return head; 369.4.3 動(dòng)態(tài)鏈表刪除鏈表所有結(jié)點(diǎn)刪除鏈表所有結(jié)點(diǎn)void delAll(score *head) score *p1=head,*p2; while( p1!=null ) p2 = p1-next;free(p1);pa = p2 379.4.3 動(dòng)態(tài)鏈

22、表插入操作:按插入操作:按idid由小到大的順序由小到大的順序score *insert(score *head, score *sp) score *p1,*p2; p1=head; if(head=NULL) head=sp; sp-next=NULL; else while(sp-id p1-id & p1-next!=NULL) p2=p1; p1=p1-next; if(sp-idid) if(head=p1) head=sp; else p2-next=sp; sp-next=p1; else p1-next=sp; sp-next=NULL; return head; s

23、p:待插結(jié)點(diǎn):待插結(jié)點(diǎn)p1:與:與sp比較的結(jié)點(diǎn)比較的結(jié)點(diǎn)p2:p1的前一個(gè)結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)38 鏈表綜合操作鏈表綜合操作9.4.3 動(dòng)態(tài)鏈表void main() score *head,stu; long del_id; head = creat(); print(head); scanf(%ld, &del_id); head=del(head,del_id); print(head); scanf(%ld,%f, &stu.id, &stu.score); head=insert(head, &stu); print(head);1010310102,9

24、010101,9010103,9810105,760,039void main() score *head,stu; long del_id; head = creat(); print(head); scanf(%ld, &del_id); head=del(head, del_id); print(head); scanf(%ld,%f, &stu.id, &stu.score); head=insert(head, &stu); print(head); scanf(%ld,%f, &stu.id, &stu.score); head=in

25、sert(head, &stu); print(head);9.4.3 動(dòng)態(tài)鏈表10102,9010104,99409.4.3 動(dòng)態(tài)鏈表90.0117890.0118876.00f600f6011781188head101011010210105sp90.0117899.0117876.00f600f6011781188head101011010410105spp241p2p1p1void main() score *head,*stu; long del_id; head = creat(); print(head); scanf(%ld, &del_id); head=de

26、l(head,del_id); print(head); stu=(score *)malloc(sizeof(score); scanf(%ld,%f, &stu-id, &stu-score); head=insert(head, stu); print(head); stu=(score*)malloc(sizeof(score); scanf(%ld,%f, &stu-id, &stu-score); head=insert(head, stu); print(head);9.4.3 建立動(dòng)態(tài)鏈表429.5.1共用體的概念 使幾個(gè)不同的變量共占同一段內(nèi)存

27、的結(jié)構(gòu)使幾個(gè)不同的變量共占同一段內(nèi)存的結(jié)構(gòu)稱為稱為“共用體共用體”類型的結(jié)構(gòu)。類型的結(jié)構(gòu)。共用體共用體聯(lián)合體(聯(lián)合體(unionunion)定義共用體類型變量的一般形式為:定義共用體類型變量的一般形式為:union 共用體名共用體名/類型名類型名 類型類型1成員成員1; 類型類型2成員成員2; 類型類型n成員成員n; 變量表列變量表列;/變量名變量名 9.5 共用體(聯(lián)合體) 43例如:union data union data int i; int i; char ch; 或或 char ch; float f; float f;a,b,c; ; union data a,b,c;說(shuō)明:共用

28、體所占存儲(chǔ)單元長(zhǎng)度是成員的最大者。說(shuō)明:共用體所占存儲(chǔ)單元長(zhǎng)度是成員的最大者。44共用體和結(jié)構(gòu)體的比較: 聯(lián)系聯(lián)系: : 類型定義、變量定義及使用方式類似。類型定義、變量定義及使用方式類似。 區(qū)別區(qū)別: : 存儲(chǔ)方式不同。存儲(chǔ)方式不同。1.1.結(jié)構(gòu)體的每一個(gè)成員都有自己的內(nèi)存單元。結(jié)構(gòu)體的每一個(gè)成員都有自己的內(nèi)存單元。 共用體的每個(gè)成員共享同一段內(nèi)存單元。共用體的每個(gè)成員共享同一段內(nèi)存單元。2.2.結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和。存長(zhǎng)度之和。 共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。員的長(zhǎng)度。45不能

29、引用共用體變量,只能引用共用體變量中的成員。不能引用共用體變量,只能引用共用體變量中的成員。例如例如:int m;union data a, d, *pd;pd = &d;a=d;d = 1; / :不能對(duì)共用體變量賦值:不能對(duì)共用體變量賦值m = d; / :不能引用共用體變量:不能引用共用體變量d.i +;(引用共用體變量中的整型變量)(引用共用體變量中的整型變量)putchar(pd-ch);(引用共用體變量中的字符變量(引用共用體變量中的字符變量ch) 9.5.2 共用體變量的引用方式46(1)(1)同一個(gè)內(nèi)存段同一個(gè)內(nèi)存段可以用來(lái)存放幾種不同類型的成可以用來(lái)存放幾種不同類型的

30、成員,但在每一瞬時(shí)只能存放其中一種。員,但在每一瞬時(shí)只能存放其中一種。(2)(2)共用體變量中起作用的成員是共用體變量中起作用的成員是最后一次存放最后一次存放的的成員,在存入一個(gè)新的成員后原有的成員就失成員,在存入一個(gè)新的成員后原有的成員就失去作用。去作用。 (3) (3) 共用體變量的地址和它的各成員的地址都是共用體變量的地址和它的各成員的地址都是同一地址同一地址。 9.5.3 共用體類型數(shù)據(jù)的特點(diǎn)47 (4)(4)不能對(duì)共用體變量名賦值,也不能企圖引用變不能對(duì)共用體變量名賦值,也不能企圖引用變量名來(lái)得到一個(gè)值,又不能在定義共用體變量量名來(lái)得到一個(gè)值,又不能在定義共用體變量時(shí)對(duì)它初始化。時(shí)對(duì)

31、它初始化。(5)(5)不能把共用體變量作為函數(shù)參數(shù),也不能使函不能把共用體變量作為函數(shù)參數(shù),也不能使函數(shù)帶回共用體變量,但可以使用指向共用體變數(shù)帶回共用體變量,但可以使用指向共用體變量的指針。量的指針。(6)(6)共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體數(shù)組。反之,結(jié)構(gòu)體也可以出可以定義共用體數(shù)組。反之,結(jié)構(gòu)體也可以出現(xiàn)在共用體類型定義中,數(shù)組也可以作為共用現(xiàn)在共用體類型定義中,數(shù)組也可以作為共用體的成員。體的成員。48 9.5.3 共用體類型數(shù)據(jù)的特點(diǎn)例,設(shè)有若干個(gè)人員的數(shù)據(jù),其中有學(xué)生和教師。例,設(shè)有若干個(gè)人員的數(shù)據(jù),其中有學(xué)生和教師。

32、學(xué)生的數(shù)據(jù)中包括:姓名、編號(hào)、性別、職業(yè)、學(xué)生的數(shù)據(jù)中包括:姓名、編號(hào)、性別、職業(yè)、班級(jí)班級(jí)。教師的數(shù)據(jù)包括:姓名、編號(hào)、性別、職。教師的數(shù)據(jù)包括:姓名、編號(hào)、性別、職業(yè)、業(yè)、職務(wù)職務(wù)?,F(xiàn)要求把它們放在同一表格中?,F(xiàn)要求把它們放在同一表格中。49算法:算法:50#include struct int num;char name10;char sex;char job;union int class;char position10;category;person2; /*先設(shè)人數(shù)為先設(shè)人數(shù)為2*/51void main() int i;for(i=0;i2;i+)scanf(“%d %s %c

33、%c”, &personi.num, ,&personi.sex, &personi.job);if(personi.job = S)scanf(%d, &personi.category.class);else if(personi.job = T)scanf(%s, personi.category.position);else printf(“Error! Input again!”);i-; 52printf(n);printf(“No. name sex job class/positionn);for(i=0;i2;i+) p

34、rintf(“%-6d%-10s%-4c%-4c”,personi.num, , personi.sex, personi.job); if (personi.job = S) printf(“%-10dn”, personi.category.class); else printf(“%-10sn”, personi.category.position);運(yùn)行情況如下:運(yùn)行情況如下:101 Li f s 501102 Wang m t professorNo. name sex job class/position101 Li f s 501102 Wang m t

35、professor53 枚舉的概念:枚舉的概念: 將變量的值一一列舉出來(lái),變量的值只限于列舉將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍內(nèi)。出來(lái)的值的范圍內(nèi)。 枚舉類型的聲明:枚舉類型的聲明:enum 枚舉類型名枚舉類型名枚舉元素表列枚舉元素表列;例:例:enum Weekdaysun, mon, tue, wed, thu, fri, sat; 枚舉變量的定義:枚舉變量的定義:enum Weekday workday, week_day;或或enumsun, mon, tue, wed, thu, fri, satworkday;注:枚舉變量的值只能是枚舉元素之一。注:枚舉變量的

36、值只能是枚舉元素之一。 9.6 枚舉類型54枚舉元素枚舉元素枚舉常量枚舉常量說(shuō)明:說(shuō)明:(1)語(yǔ)言對(duì)枚舉元素按常量處理,故稱語(yǔ)言對(duì)枚舉元素按常量處理,故稱枚舉常量枚舉常量。它們不是變量,不能對(duì)它們賦值。它們不是變量,不能對(duì)它們賦值。 (2) 枚舉元素具有值的,默認(rèn)按枚舉元素具有值的,默認(rèn)按定義時(shí)的順序定義時(shí)的順序依次使依次使它們的值為它們的值為0,1,2 。 (3) 也可以在定義時(shí)另行指定枚舉元素的值:也可以在定義時(shí)另行指定枚舉元素的值:例:例:enum weekdaysun=7,mon=1,tue,wed,thu,fri,sat;(4) 枚舉值可以用來(lái)作判斷比較。枚舉值可以用來(lái)作判斷比較。(5) 一個(gè)整數(shù)不能直接賦給一個(gè)枚舉變量,須進(jìn)行強(qiáng)一個(gè)整數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論