




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 耿小慶耿小慶 8-1 8-1 結(jié)構(gòu)體結(jié)構(gòu)體 8-2 8-2 聯(lián)合體聯(lián)合體 8-3 8-3 枚舉枚舉 8-4 8-4 類型定義類型定義為什么要使用結(jié)構(gòu)體呢?為什么要使用結(jié)構(gòu)體呢?什么是結(jié)構(gòu)體?什么是結(jié)構(gòu)體?結(jié)構(gòu)體就是把一種對(duì)結(jié)構(gòu)體就是把一種對(duì)象的所有屬性封裝在象的所有屬性封裝在一起,形成一個(gè)統(tǒng)一一起,形成一個(gè)統(tǒng)一的整體。的整體。假設(shè)現(xiàn)在開(kāi)發(fā)一個(gè)系統(tǒng),其中有學(xué)生、假設(shè)現(xiàn)在開(kāi)發(fā)一個(gè)系統(tǒng),其中有學(xué)生、教師、教室等對(duì)象,而這些對(duì)象都具教師、教室等對(duì)象,而這些對(duì)象都具有編號(hào)、名稱等屬性,若不使用結(jié)構(gòu)有編號(hào)、名稱等屬性,若不使用結(jié)構(gòu)體,則必須使用體,則必須使用studentNum、teacherNum、c
2、lassroomNum、 studentName、teacherName、classroomName等等,哇,太麻煩等等,哇,太麻煩了!了!8-1 結(jié)構(gòu)體結(jié)構(gòu)體8.1.1 結(jié)構(gòu)(類型)的定義結(jié)構(gòu)(類型)的定義 結(jié)構(gòu)(類型)的定義是對(duì)結(jié)構(gòu)體的描述,結(jié)構(gòu)的定結(jié)構(gòu)(類型)的定義是對(duì)結(jié)構(gòu)體的描述,結(jié)構(gòu)的定義并不引起系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只是制定義并不引起系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只是制定了結(jié)構(gòu)使用的內(nèi)存模式。了結(jié)構(gòu)使用的內(nèi)存模式。 定義形式定義形式 struct struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名 數(shù)據(jù)類型數(shù)據(jù)類型 成員名成員名1;1; 數(shù)據(jù)類型數(shù)據(jù)類型 成員名成員名2;2; 數(shù)據(jù)類型數(shù)據(jù)類型 成
3、員名成員名n;n; ; ;struct student struct student int num; int num; char name10; char name10; int age; int age; float score; float score; char address30; char address30; ;8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量 說(shuō)明說(shuō)明 存儲(chǔ)類型存儲(chǔ)類型 struct struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名 結(jié)構(gòu)變量名;結(jié)構(gòu)變量名;struct student struct student int num; int num; char name10; char name
4、10; int age; int age; float score; float score; char address30; char address30; ;struct student a;struct student a;struct struct studentstudent int num; int num; char name10; char name10; int age; int age; float score; float score; char address30; char address30; a;a;8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量a anumnumnamenamea
5、geagescorescoreaddressaddress2字節(jié)字節(jié)10字節(jié)字節(jié)2字節(jié)字節(jié)4字節(jié)字節(jié)30字節(jié)字節(jié)48字節(jié)字節(jié)&a=&a.numn存儲(chǔ):結(jié)構(gòu)變量說(shuō)明時(shí)分配內(nèi)存;結(jié)構(gòu)變量按成員存儲(chǔ):結(jié)構(gòu)變量說(shuō)明時(shí)分配內(nèi)存;結(jié)構(gòu)變量按成員定義的順序存儲(chǔ)在連續(xù)的內(nèi)存單元中。定義的順序存儲(chǔ)在連續(xù)的內(nèi)存單元中。8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量 成員的引用成員的引用 結(jié)構(gòu)變量名結(jié)構(gòu)變量名. .成員名成員名 初始化初始化 struct student a=1,”Mary”,20,90,” ”;struct student a=1,”Mary”,20,90,” ”; 輸入輸出輸入輸出 不允許直接輸入
6、輸出不允許直接輸入輸出 scanf(“%d%s%d%f%s”,&a.num,,&a.age,scanf(“%d%s%d%f%s”,&a.num,,&a.age, &a.score,a.address); &a.score,a.address); printf(“no:%d,name:%s,age:%d,score:%f,naddresprintf(“no:%d,name:%s,age:%d,score:%f,naddress:%s”,a.num,,a.age,a.score,a.address);s:%s”,a
7、.num,,a.age,a.score,a.address);8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量 結(jié)構(gòu)的嵌套結(jié)構(gòu)的嵌套 結(jié)構(gòu)體可以嵌套,即成員可以是另一結(jié)構(gòu)的變量結(jié)構(gòu)體可以嵌套,即成員可以是另一結(jié)構(gòu)的變量 結(jié)構(gòu)體嵌套,只能對(duì)最低一級(jí)成員進(jìn)行賦值、輸入結(jié)構(gòu)體嵌套,只能對(duì)最低一級(jí)成員進(jìn)行賦值、輸入輸出等運(yùn)算輸出等運(yùn)算struct date struct date int year; int year; int month; int month; int day; int day; ;struct studentstruct student int num; int num; struct d
8、ate birthdate; struct date birthdate; . .;8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量a a.a.birthdatebirthdate.year.yeara.a.birthdatebirthdate.month.montha.a.birthdatebirthdate.day.daya.scorea.scorea.addressa.address2字節(jié)字節(jié)10字節(jié)字節(jié)6字節(jié)字節(jié)4字節(jié)字節(jié)30字節(jié)字節(jié)52字節(jié)字節(jié)&a=&a.num8.1.2 結(jié)構(gòu)變量結(jié)構(gòu)變量 注意:注意: (1 1) 結(jié)構(gòu)結(jié)構(gòu) 類型與類型與結(jié)構(gòu)
9、結(jié)構(gòu)變量是不同的概念變量是不同的概念; (2 2)結(jié)構(gòu)體成員的使用與普通變量相同,可單獨(dú)使用)結(jié)構(gòu)體成員的使用與普通變量相同,可單獨(dú)使用; (3 3)成員名可以與程序變量名相同,但二者代表不同)成員名可以與程序變量名相同,但二者代表不同對(duì)象對(duì)象 int num; int num; struct student int num;.; struct student int num;.; (4 4)嵌套的數(shù)據(jù)成員,只有到最后一層才能進(jìn)行各種)嵌套的數(shù)據(jù)成員,只有到最后一層才能進(jìn)行各種操作操作8.1.3 結(jié)構(gòu)數(shù)組結(jié)構(gòu)數(shù)組 說(shuō)明:說(shuō)明: 存儲(chǔ)類型存儲(chǔ)類型 struct struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名
10、 結(jié)構(gòu)數(shù)組名結(jié)構(gòu)數(shù)組名 元素個(gè)數(shù)元素個(gè)數(shù) ; struct student class970540;struct student class970540; 初始化:初始化: struct student class970540=,struct student class970540=,; 輸入輸出:輸入輸出: for(i=0;i40;i+)for(i=0;i-成員名成員名 pstu-numpstu-num . - . -同屬第一優(yōu)先級(jí)同屬第一優(yōu)先級(jí) * *屬第二優(yōu)先級(jí)屬第二優(yōu)先級(jí) 初始化初始化 struct student struct student * *pstu=class9705;ps
11、tu=class9705; pstu+; pstu+; 相當(dāng)于加一個(gè)結(jié)構(gòu)類型的長(zhǎng)度相當(dāng)于加一個(gè)結(jié)構(gòu)類型的長(zhǎng)度8.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù) 利用參數(shù)傳遞結(jié)構(gòu)體利用參數(shù)傳遞結(jié)構(gòu)體 結(jié)構(gòu)變量在函數(shù)間的傳遞結(jié)構(gòu)變量在函數(shù)間的傳遞n數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制 單向傳遞,調(diào)用函數(shù)單向傳遞,調(diào)用函數(shù)-被調(diào)用函數(shù)被調(diào)用函數(shù) 形參為結(jié)構(gòu)體變量,實(shí)參為結(jié)構(gòu)體變量形參為結(jié)構(gòu)體變量,實(shí)參為結(jié)構(gòu)體變量n地址傳遞地址傳遞 雙向傳遞雙向傳遞n 形參為結(jié)構(gòu)體指針,實(shí)參為地址形參為結(jié)構(gòu)體指針,實(shí)參為地址n 表面上為數(shù)據(jù)復(fù)制,即形參和實(shí)參均為結(jié)構(gòu)體變量,表面上為數(shù)據(jù)復(fù)制,即形參和實(shí)參均為結(jié)構(gòu)體變量,但
12、結(jié)構(gòu)體的成員為指針,則實(shí)際完成的地址傳遞但結(jié)構(gòu)體的成員為指針,則實(shí)際完成的地址傳遞struct dataint a;int b;int c;struct dataint a;int b;int c;main()main() struct data arg; void func(struct data); struct data arg; void func(struct data); arg.a=27; arg.b=3; arg.c=arg.a+arg.b; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(“arg.a=%d, arg.b=%d,arg
13、.c=%dn”, arg.a, arg.b,arg.c); printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); printf(“CALL FUNC()n”); printf(“CALL FUNC()n”); func(arg); func(arg); printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); void func(struct dat
14、a parm)void func(struct data parm) printf(“parm.a=%d,parm.b=%d,parm.c=%dn”,parm.a,parg.b,parm.c); printf(“parm.a=%d,parm.b=%d,parm.c=%dn”,parm.a,parg.b,parm.c); printf(“PROCESSn”); printf(“PROCESSn”); parm.a=18, parm.b=5,parm.c=parm.a parm.a=18, parm.b=5,parm.c=parm.a* *parm.b;parm.b; printf(“parm.a
15、=%d,parm.b=%d,parm.c=%dn”,parm.a, arg.b,parm.c); printf(“parm.a=%d,parm.b=%d,parm.c=%dn”,parm.a, arg.b,parm.c); printf(“RETURNn”); printf(“RETURNn”); a: 27b: 3c: 30 argparma: 27b: 3c: 30arg.a=27,arg.b=3,arg.c=30arg.a=27,arg.b=3,arg.c=30CALL FUNC()CALL FUNC()parm.a=27,parm.b=3,parm.c=30parm.a=27,parm
16、.b=3,parm.c=30PROCESSPROCESSparm.a=18,parm.b=5,parm.c=90parm.a=18,parm.b=5,parm.c=90RETURN RETURN arg.a=27,arg.b=3,arg.c=30arg.a=27,arg.b=3,arg.c=30a: 18b: 5c: 90數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制struct dataint a;int b;int c;struct dataint a;int b;int c;main()main() struct data arg; void func(struct data struct data arg; voi
17、d func(struct data * *);); arg.a=27; arg.b=3;arg.c=arg.a+arg.b; arg.a=27; arg.b=3;arg.c=arg.a+arg.b; printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); printf(“CALL FUNC()n”); printf(“CALL FUNC()n”); func( func(& &arg);arg)
18、; printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); printf(“arg.a=%d, arg.b=%d,arg.c=%dn”, arg.a, arg.b,arg.c); void func(struct data void func(struct data * *parm)parm) printf(“parm-a=%d,parm-b=%d,parm-c=%dn”,parm-a,parg-b,parm- printf(“parm-a=%d,parm-b=%d,parm-c=%dn”,parm-a,parg-b,parm-c
19、);c); printf(“PROCESSn”); printf(“PROCESSn”); parm-a=18, parm-b=5, parm-c=parm-a parm-a=18, parm-b=5, parm-c=parm-a* *parm-b;parm-b; printf(“parm-a=%d,parm-b=%d,parm-c=%dn”,parm-a,parg-b,parm- printf(“parm-a=%d,parm-b=%d,parm-c=%dn”,parm-a,parg-b,parm-c);c); printf(“RETURNn”); printf(“RETURNn”); a:
20、27b: 3c: 30 argparm2000a: 18b: 5c: 90地址傳遞(地址傳遞(1)arg.a=27,arg.b=3,arg.c=30arg.a=27,arg.b=3,arg.c=30CALL FUNC()CALL FUNC()parm-a=27,parm.b-3,parm-c=30parm-a=27,parm.b-3,parm-c=30PROCESSPROCESSparm-a=18,parm-b=5,parm-c=90parm-a=18,parm-b=5,parm-c=90RETURN RETURN arg.a=18,arg.b=5,arg.c=90arg.a=18,arg.b
21、=5,arg.c=90struct data int struct data int * *a;int a;int * *b;int b;int * *c;c;main()main() struct data arg; void func(struct data); int x,y,z; struct data arg; void func(struct data); int x,y,z; arg.a=&x, arg.a=&x,* *arg.a=27;arg.b=&y,arg.a=27;arg.b=&y,* *arg.b=3;arg.c=&z; arg.
22、b=3;arg.c=&z; * *arg.c=arg.c=* *arg.a+arg.a+* *arg.b;arg.b; printf(“ printf(“* *arg.a=%d,arg.a=%d,* *arg.b=%d,arg.b=%d,* *arg.c=%dn”, arg.c=%dn”, * *arg.a, arg.a, * *arg.b,arg.b,* *arg.c);arg.c); printf(“CALL FUNC()n”); printf(“CALL FUNC()n”); func(arg); func(arg); printf(“ printf(“* *arg.a=%d,a
23、rg.a=%d,* *arg.b=%d,arg.b=%d,* *arg.c=%dn”, arg.c=%dn”, * *arg.a, arg.a, * *arg.b,arg.b,* *arg.c);arg.c); void func(struct data parm)void func(struct data parm) printf(“printf(“* *parm.a=%d,parm.a=%d,* *parm.b=%d,parm.b=%d,* *parm.c=%dn”,parm.c=%dn”,* *parm.a,parm.a,* *parg.b,parg.b,* *parm.parm.c);
24、c); printf(“PROCESSn”); printf(“PROCESSn”); * *parm.a=18, parm.a=18, * *parm.b=5, parm.b=5, * *parm.c=parm.c=* *parm.aparm.a* * *parm.b;parm.b; printf(“printf(“* *parm.a=%d,parm.a=%d,* *parm.b=%d,parm.b=%d,* *parm.c=%dn”,parm.c=%dn”,* *parm.a,parm.a,* *parg.b,parg.b,* *parm.parm.c);c); printf(“RETUR
25、Nn”); printf(“RETURNn”); x: 27y: 3z: 30 argparma:2000b:2002c:2004* *arg.a=27,arg.a=27,* *arg.b=3,arg.b=3,* *arg.c=30arg.c=30CALL FUNC()CALL FUNC()* *parm.a=27,parm.a=27,* *parm.b=3,parm.b=3,* *parm.c=30parm.c=30PROCESSPROCESS* *parm.a=18,parm.a=18,* *parm.b=5,parm.b=5,* *parm.c=90parm.c=90RETURN RET
26、URN * *arg.a=18,arg.a=18,* *arg.b=5,arg.b=5,* *arg.c=90arg.c=90 x: 18y: 5z: 90地址傳遞(地址傳遞(2)a:2000b:2002c:20048.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù) 2 2、 結(jié)構(gòu)數(shù)組在函數(shù)間的傳遞結(jié)構(gòu)數(shù)組在函數(shù)間的傳遞數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制雙向傳遞雙向傳遞形參為結(jié)構(gòu)指針或結(jié)構(gòu)數(shù)組,實(shí)參為地址形參為結(jié)構(gòu)指針或結(jié)構(gòu)數(shù)組,實(shí)參為地址stuq2000stu0stu1stu398.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù)四四十十個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)struct studen
27、t int num; char name12; float score; struct student int num; char name12; float score; ;main()main() struct student stu40, struct student stu40,* *p; int i, max(struct student p; int i, max(struct student * *,int);,int); for(i=0;i40;i+) for(i=0;iscore; int i,m=0; float s=q-score; int i,m=0; for(q+,i
28、=1;in;i+,q+) for(q+,i=1;iscores) s=q-score; m=i; if(q-scores) s=q-score; m=i; return(m); return(m); 結(jié)構(gòu)數(shù)組的傳遞結(jié)構(gòu)數(shù)組的傳遞求某班學(xué)生的平均成績(jī)求某班學(xué)生的平均成績(jī)struct student int num; char name20; float score; ;struct student int num; char name20; float score; ;main()main() struct student class40; struct student class40; int
29、 i; int i; float avg,average(struct student float avg,average(struct student * *, int);, int); for(i=0;i40;i+) for(i=0;i40;i+) scanf(“%d%s%f”,&classi.num, ,&classi.score); scanf(“%d%s%f”,&classi.num, ,&classi.score); avg=average(class,40); avg=average(class,40);
30、 printf(“average score is: %fn”, avg); printf(“average score is: %fn”, avg); float average(struct student float average(struct student * *p,int n)p,int n) int i; float a=0; int i; float a=0; for(i=0;iscore; for(i=0;iscore; a/=n; a/=n; return(a); return(a); 8.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)數(shù)組的傳遞結(jié)構(gòu)數(shù)組的傳遞for(i=0;in;
31、i+) a+=(for(i=0;iscore; a+=(p+i)-score; * */ /8.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù) 結(jié)構(gòu)型函數(shù)與結(jié)構(gòu)指針型函數(shù)結(jié)構(gòu)型函數(shù)與結(jié)構(gòu)指針型函數(shù) 返回值為結(jié)構(gòu)類型(結(jié)構(gòu)變量或結(jié)構(gòu)指針)返回值為結(jié)構(gòu)類型(結(jié)構(gòu)變量或結(jié)構(gòu)指針) 說(shuō)明:說(shuō)明: struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 函數(shù)名(形式參數(shù))函數(shù)名(形式參數(shù)) struct struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 * *函數(shù)名(形式參數(shù))函數(shù)名(形式參數(shù)) 注意:注意:四個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)四個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)#include #inc
32、lude struct student int num; char name12; float score; struct student int num; char name12; float score; ;main()main() struct student stu40, max(struct student struct student stu40, max(struct student * *,int),p; int i; ,int),p; int i; for(i=0;i40;i+) for(i=0;inum; strcpy(,q-name); m.score=q-s
33、core; m.num=q-num; strcpy(,q-name); m.score=q-score; for(q+,i=1;in;i+,q+) for(q+,i=1;iscorem.score) if(q-scorem.score) m.num=q-num; strcpy(,q-name); m.score=q-score; m.num=q-num; strcpy(,q-name); m.score=q-score; return(m); return(m); 8.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)型函數(shù)結(jié)構(gòu)型函數(shù)8.1.5 結(jié)構(gòu)體與函數(shù)結(jié)構(gòu)體與函數(shù)四
34、個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)四個(gè)學(xué)生,要求找出成績(jī)最高者的姓名和成績(jī)struct student int num; char name12; float score; struct student int num; char name12; float score; ;main()main() struct student stu40, struct student stu40, * * max(struct student max(struct student * *,int),int),* *p; int i; p; int i; for(i=0;i40;i+) for(i=0;
35、inum,p-name,p-score); printf(No:%dnname:%snscore:%fn,p-num,p-name,p-score); struct student struct student * *max(struct student max(struct student * *q,int n)q,int n) struct student struct student * *m=q; int i;m=q; int i; for(q+,i=1;in;i+,q+) for(q+,i=1;iscorem-score) m=q; if(q-scorem-score) m=q; r
36、eturn(m); return(m); 結(jié)構(gòu)指針型函數(shù)結(jié)構(gòu)指針型函數(shù)8-2 聯(lián)合體聯(lián)合體 格式:格式:union union 聯(lián)合類型名聯(lián)合類型名 成員列表;成員列表; 聯(lián)合變量名聯(lián)合變量名 ; union union 聯(lián)合類型名聯(lián)合類型名 聯(lián)合變量名;聯(lián)合變量名;同結(jié)構(gòu)體一樣,聯(lián)合體也是由不同數(shù)據(jù)類型的數(shù)據(jù)元素同結(jié)構(gòu)體一樣,聯(lián)合體也是由不同數(shù)據(jù)類型的數(shù)據(jù)元素(成員)組成,但其占有內(nèi)存的方式不同。(成員)組成,但其占有內(nèi)存的方式不同。結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員所占的長(zhǎng)度之結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員所占的長(zhǎng)度之和和,各成,各成員分別占有自己的內(nèi)存單元。員分別占有自己的內(nèi)存單元。聯(lián)合體變
37、量所占內(nèi)存長(zhǎng)度等于聯(lián)合體變量所占內(nèi)存長(zhǎng)度等于最長(zhǎng)最長(zhǎng)的成員長(zhǎng)度。聯(lián)合使用的成員長(zhǎng)度。聯(lián)合使用覆蓋技術(shù),使不同成員占用同一段存儲(chǔ)區(qū)域。覆蓋技術(shù),使不同成員占用同一段存儲(chǔ)區(qū)域。&a=&a.c15字節(jié)字節(jié)結(jié)構(gòu)與聯(lián)合存儲(chǔ)模式的差異結(jié)構(gòu)與聯(lián)合存儲(chǔ)模式的差異struct struct char c; char c; int i; int i; float f; float f; double d; double d; a; a;union union char c; char c; int i; int i; float f; float f; double d; double d; b;
38、 b;a a c ci if fd d1248b b c ci if fd d12848字節(jié)字節(jié)&b=&b.c=&b.i=&b.f= &b.d8-2 聯(lián)合體聯(lián)合體 特點(diǎn):特點(diǎn):(1 1)每一時(shí)刻,只有一個(gè)成員起作用,只能保持某)每一時(shí)刻,只有一個(gè)成員起作用,只能保持某個(gè)成員項(xiàng)的數(shù)據(jù)個(gè)成員項(xiàng)的數(shù)據(jù)(2 2)聯(lián)合變量起作用的成員是最后一次存放的成員)聯(lián)合變量起作用的成員是最后一次存放的成員(3 3)聯(lián)合變量的地址和其各成員地址是同一地址)聯(lián)合變量的地址和其各成員地址是同一地址(4 4)不能在定義聯(lián)合變量時(shí)初始化)不能在定義聯(lián)合變量時(shí)初始化(5 5)不能把聯(lián)合
39、變量作為函數(shù)參數(shù)和返回值,但可)不能把聯(lián)合變量作為函數(shù)參數(shù)和返回值,但可以使用聯(lián)合指針以使用聯(lián)合指針(6 6)聯(lián)合可以嵌套,其成員亦可以是結(jié)構(gòu)或數(shù)組)聯(lián)合可以嵌套,其成員亦可以是結(jié)構(gòu)或數(shù)組8-2 聯(lián)合體聯(lián)合體structstruct int num; int num; char name12; char name12; char sex; char sex; union int class; union int class; char position10; char position10; category; category;person;person;sizeof(person)=25s
40、izeof(person)=258-3 枚舉枚舉 功能:枚舉功能:枚舉-將變量的值一一列舉出來(lái)將變量的值一一列舉出來(lái)如果一個(gè)變量只有幾種可能的值,可以定義為枚舉如果一個(gè)變量只有幾種可能的值,可以定義為枚舉類型。類型。 格式:格式:enumenum 枚舉類型名枚舉類型名 枚舉元素列表枚舉元素列表 ; 定義定義enumenum 枚舉類型名枚舉類型名 枚舉變量;枚舉變量; 說(shuō)明說(shuō)明 例子:例子:enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday workdayen
41、um weekday workday,weekend;weekend;8-3 枚舉枚舉n說(shuō)明:說(shuō)明:(1 1)枚舉元素不是變量,不能賦值,按常量處理)枚舉元素不是變量,不能賦值,按常量處理(2 2)枚舉元素是有值的,按定義時(shí)順序值為)枚舉元素是有值的,按定義時(shí)順序值為0 0,1 1,22 可指定枚舉元素的值,其后為前值增可指定枚舉元素的值,其后為前值增1 1 若若enum weekday sun,mon,tue,wed,thu,fri,sat;enum weekday sun,mon,tue,wed,thu,fri,sat; 則則sun=0sun=0,mon=1,tue=2mon=1,tue=
42、2 若若enum weekday sun=7,mon,tue,wed,thu,fri,sat;enum weekday sun=7,mon,tue,wed,thu,fri,sat; 則則sun=7sun=7,mon=8,tue=9mon=8,tue=9 所以所以enum weekday sun=7,mon=1,tue,wed,thu,fri,sat;enum weekday sun=7,mon=1,tue,wed,thu,fri,sat;(3 3)枚舉值可用來(lái)判斷)枚舉值可用來(lái)判斷 if(workdaysun) if(workdaysun) 順序號(hào)順序號(hào)(4 4)一個(gè)整數(shù)不能直接賦值給枚舉變量
43、)一個(gè)整數(shù)不能直接賦值給枚舉變量 workday=2;workday=2; - workday=(enum weekday)2; - workday=(enum weekday)2;main()main() enum color red,white,blue,green,black; enum color red,white,blue,green,black; enum color i,j,present; enum color i,j,present; for(i=red;i=black;i+) for(i=red;i=black;i+) for(j=red;j=black;j+) for(j=red;j=black
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 用智慧譜寫(xiě)幼兒園發(fā)展新篇章計(jì)劃
- 重大建設(shè)項(xiàng)目的安全檢查計(jì)劃
- 2025年貓爬架項(xiàng)目發(fā)展計(jì)劃
- 2025年板臥式電除塵器項(xiàng)目合作計(jì)劃書(shū)
- 2025年密封用填料及類似品項(xiàng)目建議書(shū)
- 實(shí)施均衡發(fā)展的人口政策
- 醫(yī)療健康管理服務(wù)協(xié)議
- 藝術(shù)品交易與展示項(xiàng)目投資合同
- 擔(dān)保期權(quán)合同
- 西游記中的人物形象賞析與解讀
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)各單元重點(diǎn)語(yǔ)法知識(shí)點(diǎn)講義
- 安全閥校驗(yàn)標(biāo)準(zhǔn)
- 耳穴壓豆課件
- 建筑制圖與識(shí)圖教學(xué)課件:第八章 結(jié)構(gòu)施工圖
- 湘教版三年級(jí)美術(shù)下冊(cè)教案全冊(cè)
- (高清版)DB15∕T 3585-2024 高標(biāo)準(zhǔn)農(nóng)田施工質(zhì)量評(píng)定規(guī)程
- 試油(氣)HSE作業(yè)指導(dǎo)書(shū)
- 重癥監(jiān)護(hù)-ICU的設(shè)置、管理與常用監(jiān)測(cè)技術(shù)
- 法律顧問(wèn)服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 中醫(yī)藥三方合作協(xié)議書(shū)范本
- 2024年《動(dòng)漫藝術(shù)概論》自考復(fù)習(xí)題庫(kù)(附答案)
評(píng)論
0/150
提交評(píng)論