版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章結(jié)構(gòu)類型[Return]本章學(xué)習(xí)目標(biāo)掌握結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的定義
掌握結(jié)構(gòu)體變量的引用和初始化掌握結(jié)構(gòu)體數(shù)組的定義和初始化掌握指向結(jié)構(gòu)體類型數(shù)據(jù)的指針掌握共用體類型、變量的定義和使用掌握枚舉類型的使用方法掌握使用typedef定義類型的別名本章主要內(nèi)容10.1結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的定義
10.2結(jié)構(gòu)體變量的引用與初始化
10.3結(jié)構(gòu)體數(shù)組
10.4指向結(jié)構(gòu)體類型數(shù)據(jù)的指針
10.5共用體類型
10.6枚舉類型
10.7用typedef定義類型的別名
10.1 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的定義10.1.1結(jié)構(gòu)體類型的定義通過(guò)之前的學(xué)習(xí)我們知道C系統(tǒng)為了方便處理各種數(shù)據(jù)而將這些數(shù)據(jù)根據(jù)種類的不同分成了若干種類型,其中既包括整型、實(shí)型、字符型等基本類型,也包括數(shù)組這樣的構(gòu)造類型。但在很多情況下僅僅只有這些數(shù)據(jù)類型是不夠的,在實(shí)際的應(yīng)用中,經(jīng)常會(huì)遇到這樣的問(wèn)題:幾個(gè)類型不同的數(shù)據(jù)項(xiàng)之間有著密切地聯(lián)系,它們屬于同一個(gè)整體,常常被用來(lái)描述某一事物的幾個(gè)特性。例如,現(xiàn)在編寫程序需要存放學(xué)校所有教職工信息,每位教職工的信息都分為職工號(hào)、姓名、年齡、工資和籍貫等信息項(xiàng),并且這些項(xiàng)都與某一教職工緊密相連。如表10-1所示。從上圖可以看出,每位教職工都有屬于自己的職工號(hào)、姓名、年齡和籍貫,并且這些信息都屬于不同的數(shù)據(jù)類型,因此無(wú)法使用數(shù)組來(lái)表示(數(shù)組中的各元素必須都屬于同一類型)。而如果將這些信息項(xiàng)分別使用相互獨(dú)立的變量來(lái)表示,又無(wú)法反映各信息項(xiàng)之間的內(nèi)在聯(lián)系和整體性,并且處理起來(lái)也很不方便。因此,C語(yǔ)言提供了一種特殊的數(shù)據(jù)類型,這種數(shù)據(jù)類型可以把不同類型(也可以相同)的數(shù)據(jù)有機(jī)地組織成一個(gè)整體,這個(gè)整體就稱為結(jié)構(gòu)體類型。結(jié)構(gòu)體類型是用戶自定義的一種數(shù)據(jù)描述,主要由組成該結(jié)構(gòu)的各個(gè)數(shù)據(jù)成員構(gòu)成。其定義的一般形式如下:
struct結(jié)構(gòu)體類型名
{
數(shù)據(jù)成員列表
};說(shuō)明:(1)struct為關(guān)鍵字,不能省略,用來(lái)表示定義的數(shù)據(jù)類型為結(jié)構(gòu)體類型。(2)結(jié)構(gòu)體類型名是結(jié)構(gòu)體類型的名字,其命名時(shí)應(yīng)當(dāng)遵循命名規(guī)則。(3)花括弧中的“數(shù)據(jù)成員列表”是指結(jié)構(gòu)體中的各個(gè)數(shù)據(jù)成員,這些數(shù)據(jù)成員有機(jī)地結(jié)合成一個(gè)整體,構(gòu)成了結(jié)構(gòu)體。結(jié)構(gòu)體的各個(gè)數(shù)據(jù)成員都需要定義,其定義形式為:
類型名成員變量名類型名既可以是int、char等基本類型,也可以是一個(gè)結(jié)構(gòu)體類型,但是C語(yǔ)言規(guī)定,結(jié)構(gòu)體類型在定義時(shí)不能包含自身,即不能由自己定義自己;成員變量名命名規(guī)則與普通變量名相同。(4)定義完的結(jié)構(gòu)體類型和系統(tǒng)提供的基本類型具有同樣的作用,都可以用來(lái)定義變量。(5)最后的分號(hào)不能省略。例如,表10-1的教職工信息可以定義為結(jié)構(gòu)體類型:
structteacher { longnum;/*職工號(hào)*/ charname[20];/*職工姓名*/ intage;/*職工年齡*/ floatsalary;/*職工工資*/ charaddr[20];/*職工籍貫*/ };※注意:結(jié)構(gòu)體類型和其他基本類型一樣,只是一個(gè)數(shù)據(jù)模型,并沒(méi)有具體實(shí)例,系統(tǒng)也不會(huì)為其分配內(nèi)存單元。因此,為了使用結(jié)構(gòu)體類型的數(shù)據(jù),必須先定義結(jié)構(gòu)體類型變量。10.1.2結(jié)構(gòu)體類型變量的定義定義完結(jié)構(gòu)體類型之后就可以定義結(jié)構(gòu)體類型變量了。定義結(jié)構(gòu)體類型變量一般有三種方法:1、先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。其一般定義形式為:
struct類型名變量名例如: structteachert1,t2;※注意:定義結(jié)構(gòu)體變量時(shí),struct不能省略,既不能寫為teachert1,t2。
2、在定義結(jié)構(gòu)體類型的同時(shí)定義變量。其一般的形式為:
struct結(jié)構(gòu)體類型名
{
數(shù)據(jù)成員列表
}變量名列表;
例如:
structteacher { longnum; charname[20]; intage; floatsalary; charaddr[20]; }t1,t2;※注意:在定義完變量后再加上分號(hào)。
3、省略結(jié)構(gòu)體類型名,直接定義結(jié)構(gòu)體變量。C語(yǔ)言允許使用匿名的結(jié)構(gòu)體類型來(lái)定義變量,其一般形式為:
struct {
數(shù)據(jù)成員列表
}變量名列表;例如:
struct { longnum; charname[20]; intage; floatsalary; charaddr[20]; }t1,t2;這種方法雖然簡(jiǎn)單,但是程序無(wú)法再次使用這種匿名的結(jié)構(gòu)體類型。關(guān)于結(jié)構(gòu)體類型和變量的補(bǔ)充說(shuō)明:(1)結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是完全不同的概念,不能對(duì)結(jié)構(gòu)體類型進(jìn)行賦值、運(yùn)算和輸出。(2)系統(tǒng)在編譯時(shí),只對(duì)結(jié)構(gòu)體變量分配內(nèi)存空間,而對(duì)結(jié)構(gòu)體類型不分配空間。(3)結(jié)構(gòu)體變量在內(nèi)存中所占空間大小等于該變量的所有成員變量所占內(nèi)存空間之和,并且這些成員變量在內(nèi)存中是順序存放的。例如,上面定義的結(jié)構(gòu)體structteacher的變量t1所占內(nèi)存空間的大小為:4+20+2+4+20=50字節(jié)。(4)結(jié)構(gòu)體中的成員變量既可以是基本類型變量,也可以是另一個(gè)結(jié)構(gòu)體類型的變量。例如:
structdate { intyear; intmonth; intday; }; structteacher { longnum; charname[20]; intage; floatsalary; charaddr[20];
structdatebirthday;/*birthday是一個(gè)structdate類型的變量*/ };※注意:structdate的定義應(yīng)該放在structteacher的定義前;結(jié)構(gòu)體成員變量的類型不能是正在定義的結(jié)構(gòu)體類型,既structteacher的定義中不能含有structteacher類型的變量,但可以含有正在定義的結(jié)構(gòu)體類型的指針。
10.2 結(jié)構(gòu)體變量的引用與初始化10.2.1結(jié)構(gòu)體類型變量的引用定義完結(jié)構(gòu)體變量后,就可以對(duì)這個(gè)結(jié)構(gòu)體變量進(jìn)行賦值和引用了。但是在引用結(jié)構(gòu)體變量時(shí),不能對(duì)變量整體進(jìn)行引用,只能對(duì)結(jié)構(gòu)體變量中的各成員變量逐個(gè)引用。其引用格式一般為:
結(jié)構(gòu)體變量名.成員變量名這里的“.”稱為成員運(yùn)算符,它是左結(jié)合的,具有最高的優(yōu)先級(jí)。例如,對(duì)上節(jié)中的結(jié)構(gòu)體變量t1的num進(jìn)行賦值:t1.num=1010;在這里需要注意的是,不能將結(jié)構(gòu)體變量作為整體進(jìn)行賦值和輸出。例如,以下的用法是錯(cuò)誤的:
scanf(“%ld%s%d%f%s”,&t1.num,&,&t1.age,&t1.salary,&t1.addr); printf(“%ld,%s,%d,%f,%s”,t1.num,,t1.age,t1.salary,t1.addr);如果結(jié)構(gòu)體變量中又含有其他結(jié)構(gòu)體類型的成員,則在引用時(shí)只能對(duì)其最低級(jí)的成員進(jìn)引用。例如,對(duì)上節(jié)定義的結(jié)構(gòu)體變量t1的成員birthday進(jìn)行賦值:
t1.birthday.year=1978; t1.birthday.month=11; t1.birthday.day=8;結(jié)構(gòu)體類型的成員變量和其他普通變量一樣,也可以進(jìn)行各種合法的運(yùn)算。例如:
t1.num=t2.num; t1.salary=t1.salary+500;同一種類型的結(jié)構(gòu)體變量之間可以整體地進(jìn)行賦值。例如:t1=t2;雖說(shuō)是整體賦值,實(shí)際是將t2的各成員變量的值依次賦給t1的各成員變量的。
10.2.2結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量在定義的同時(shí),可以對(duì)其各成員變量進(jìn)行初始化操作。例如:struct{ longnum; charname[20]; intage; floatsalary; charaddr[20];}t1={1010,”LiBei”,”28”,”2500.0”,”Beijing”};如果結(jié)構(gòu)體變量還含有其他結(jié)構(gòu)體類型成員,那么在進(jìn)行初始化操作時(shí),應(yīng)該按照最低層類型提供數(shù)據(jù)。例如:structdate{ intyear; intmonth; intday;};structteacher{ longnum; charname[20]; intage; structdatebirthday; floatsalary; charaddr[20]; }t1={1010,”LiBei”,”28”,1978,11,8,”2500.0”,”Beijing”};舉例:/*exam10-1*/#include“stdio.h”main(){structdate{intyear; intmonth; intday;}; structteacher{ longnum; charname[20]; intage; structdatebirthday; floatsalary; charaddr[20]; }t1={1010,”LiBei”,28,1978,11,8,2500.0,”Beijing”};printf(“Num:%ld\nName:%s\nAge:%d\nBirthday:%d-%d-%d\nSalary:%f\nAddr:%s\n”,t1.num,,t1.age,t1.birthday.year,t1.birthday.month,t1.birthday.day,t1.salary,t1.addr);}Num:1010
Name:LiBeiAge:28
Birthday:1978-11-8Salary:2500.0
Addr:Beijing程序運(yùn)行結(jié)果:[Return]10.3結(jié)構(gòu)體數(shù)組10.3.1結(jié)構(gòu)體數(shù)組的定義當(dāng)需要處理多個(gè)相同結(jié)構(gòu)體類型的數(shù)據(jù)時(shí),可以使用結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組和普通數(shù)組一樣,都可以順序存放數(shù)據(jù),只是結(jié)構(gòu)體數(shù)組中的每個(gè)元素都是同一類型的結(jié)構(gòu)體變量。結(jié)構(gòu)體數(shù)組的定義方式和結(jié)構(gòu)體變量的定義方式相同,也可以分為三種:(1)先定義類型,再定義數(shù)組。例如:
structteacher { …… }; structteachert[10];(2)在定義類型的同時(shí),定義數(shù)組。例如:
structteacher { …… }t[10];(3)不定義類型,直接定義數(shù)組。例如:
structteacher { …… }t[10];定義完結(jié)構(gòu)體數(shù)組后,就可以使用下標(biāo)法來(lái)訪問(wèn)各數(shù)組元素了。其一般方法為:
結(jié)構(gòu)體數(shù)組名[下標(biāo)].成員變量名例如:
t[3].num=10020; printf(“%f”,t[3].salary);10.3.2結(jié)構(gòu)體數(shù)組的初始化結(jié)構(gòu)體數(shù)組的初始化方法如下: structteachert[3]={{1010,”LiBei”,28,2500.0,”Beijing”},{1011,”ZhangXia”,31,3000.0,”Shanghai”},{1012,”WangDong”,25,2800.0,”Guangzhou”}};如果在初始化的時(shí)候,沒(méi)有對(duì)某個(gè)數(shù)組元素的成員變量賦初值,則系統(tǒng)在編譯時(shí)會(huì)自動(dòng)地將0賦給數(shù)值型變量,將’\0’賦給字符型變量。除此之外還可以在結(jié)構(gòu)體類型定義的時(shí)候?qū)Y(jié)構(gòu)體數(shù)組進(jìn)行賦初值。例如: structteacher { …… }t[3]={{1010,”LiBei”,28,2500.0,”Beijing”},{1011,”ZhangXia”,31,3000.0,”Shanghai”},{1012,”WangDong”,25,2800.0,”Guangzhou”}};[Return]10.4指向結(jié)構(gòu)體類型數(shù)據(jù)的指針10.4.1指向結(jié)構(gòu)體變量的指針
結(jié)構(gòu)體變量在內(nèi)存中有對(duì)應(yīng)的地址空間,其地址的值就是該變量所占內(nèi)存空間的起始地址。因此我們可以定義一個(gè)指針變量來(lái)指向該結(jié)構(gòu)體變量,即指針變量存放的值是結(jié)構(gòu)體變量在內(nèi)存中的起始地址。1、定義結(jié)構(gòu)體指針變量的一般定義形式為:struct結(jié)構(gòu)體類型名﹡指針變量名 例如:structteacher﹡p;定義完結(jié)構(gòu)體指針變量后就可以使該變量指向同類型的結(jié)構(gòu)體變量。例如: structteacher﹡p,t1; p=&t1;/*p指向t1*/2、引用和其他的指針變量一樣,我們可以通過(guò)結(jié)構(gòu)體指針變量間接引用它所指向變量的數(shù)據(jù)成員。其引用的方法一般有兩種:(1)通過(guò)(﹡指針變量名).成員變量名的方法來(lái)引用。例如:
(﹡p).num=1001; printf(“%ld”,(﹡p).num);這里的(﹡p).num等價(jià)于t1.num。除此之外還需要注意的是,由于成員運(yùn)算符“.”的優(yōu)先級(jí)高于“﹡”運(yùn)算符,因此指針變量名外邊的括號(hào)不能省略,否則﹡p.num就等價(jià)于﹡(p.num)了。(2)通過(guò)指針變量名—>成員變量名的方法來(lái)引用(“—>”為指向成員運(yùn)算符)。例如:
p—>num=1001; printf(“%ld”,p—>num);這種引用方法的效果和(﹡p).num的效果是相同的,只是采用p—>num來(lái)引用結(jié)構(gòu)體變量的成員時(shí)顯得更加直觀和方便。例10-3輸出結(jié)構(gòu)體變量的各成員的值/*exam10-3*/#include“stdio.h”main(){structteacher{longnum;charname[20];intage;floatsalary;}; structteachert,﹡p;p=&t;t.num=1011;strcpy(,”LiWei”);t.age=32;t.salary=2800.0;printf(“Num:%ld\nName:%s\nAge:%d\nSalary:%f\n”,t.num,,t.age,t.salary);printf(“Num:%ld\nName:%s\nAge:%d\nSalary:%f\n”,(﹡p).num,(﹡p).name,(﹡p).age,(﹡p).salary);printf(“Num:%ld\nName:%s\nAge:%d\nSalary:%f\n”,p—>num,p—>name,p—>age,p—>salary);}[演示]10.4.2指向結(jié)構(gòu)體數(shù)組的指針
和普通數(shù)組一樣,對(duì)于結(jié)構(gòu)體數(shù)組也可以使用指針變量來(lái)指向。如果一個(gè)指針變量存放的是一個(gè)結(jié)構(gòu)體數(shù)組的首地址,則稱該指針變量指向這個(gè)結(jié)構(gòu)體數(shù)組。例如: structteachert[3],﹡p;p=t;C語(yǔ)言規(guī)定數(shù)組名代表數(shù)組元素的首地址,因此將結(jié)構(gòu)體數(shù)組t的首地址賦給指針變量p,p就指向了數(shù)組t的首元素t[0],然后就可以通過(guò)指針變量的移動(dòng)來(lái)訪問(wèn)其他的數(shù)組元素了。例如:p指向數(shù)組t的首元素,則p+1就指向數(shù)組元素t[1],依次類推,p+i指向數(shù)組元素t[i]。其指向關(guān)系見(jiàn)圖10-1。如果需要通過(guò)指針變量來(lái)訪問(wèn)某個(gè)數(shù)組元素的成員變量,可以將指針變量指向該數(shù)組元素,然后通過(guò)“(﹡指針變量).成員變量”或“(﹡指針變量)—>成員變量”的方式進(jìn)行訪問(wèn)。例10-4通過(guò)指向結(jié)構(gòu)體數(shù)組的指針變量來(lái)訪問(wèn)結(jié)構(gòu)體數(shù)組的各元素。/*exam10-4*/#include“stdio.h”main(){structteacher{ longnum; charname[20]; intage; floatsalary;}t[3]={{1010,”LiWei”,32,2500.0},{1011,”ZhangLei”,28,2000.0},{1012,”WuNan”,26,2200.0}}; structteacher﹡p;for(p=t;p<t+3;p++){printf(“Num:%ldName:%sAge:%dSalary:%f\n”,p—>num,p—>name,p—>age,p—>salary);}}[演示]※注意:由于p是一個(gè)指向structteacher類型的指針變量,因此只能指向structteacher類型的數(shù)據(jù),而不能指向t數(shù)組元素中的某一成員。例如,以下的程序是錯(cuò)誤的:p=&t[0].num;[Return]10.5共用體類型10.5.1共用體類型的定義
除了結(jié)構(gòu)體以外,C語(yǔ)言還提供了一種構(gòu)造類型:共用體。與結(jié)構(gòu)體類似,用戶也可以在共用體中定義多種不同數(shù)據(jù)類型的成員。其一般定義形式為: union共用體類型名
{
成員變量列表
};說(shuō)明:union為關(guān)鍵字,用來(lái)聲明用戶定義的是一個(gè)共用體類型,而成員列表表示的是共用體類型中所含有的各成員變量。例如,定義一個(gè)共用體類型data:
uniondata { inti; charc; floatf; };共用體與結(jié)構(gòu)體之間的區(qū)別共用體與結(jié)構(gòu)體最大的不同在于其成員變量所占的內(nèi)存長(zhǎng)度不同:結(jié)構(gòu)體變量所占的內(nèi)存長(zhǎng)度等于各成員變量所占的內(nèi)存長(zhǎng)度之和,即每個(gè)成員變量都有屬于自己的內(nèi)存空間;共用體變量的各成員變量都共享同一塊內(nèi)存空間,即共用體變量所占的內(nèi)存長(zhǎng)度等于其最長(zhǎng)的成員變量所占的內(nèi)存長(zhǎng)度。例如,上面定義的共用體類型data含有三個(gè)成員:inti、charc、floatf,由于floatf所占的內(nèi)存長(zhǎng)度最長(zhǎng),因此其他的兩個(gè)成員都共享f的內(nèi)存空間(見(jiàn)圖10-2),即共用體data的變量所占內(nèi)存長(zhǎng)度就等于其成員f所占的內(nèi)存長(zhǎng)度?!⒁猓汗灿皿w采用了覆蓋技術(shù),各成員變量互相覆蓋,達(dá)到共享同一段內(nèi)存的目的,這么做的最大好處是可以大大節(jié)省內(nèi)存空間。10.5.1共用體變量的定義
1、先定義共用體類型,再定義共用體變量。其一般定義形式為:
union類型名變量名例如:uniondataa,b;2、在定義共用體類型的同時(shí)定義變量。其一般的形式為:
union共用體類型名
{
成員列表
}變量名列表;例如:
uniondata { inti; charc; floatf; }a,b;3、省略共用體類型名,直接定義變量。
union {
成員列表
}變量名列表;例如:
union { inti; charc; floatf; }a,b;10.5.2共用體變量的引用
定義完共用體變量后,就可以對(duì)該變量進(jìn)行引用了。共用體變量的引用和結(jié)構(gòu)體變量的引用方式類似,但是不能引用共用體變量整體,而只能引用共用體變量中的成員。例如,引用共用體變量a中的成員:
scanf(“%d”,&a.i); printf(“%d”,a.i);在共用體變量的引用時(shí),應(yīng)該注意以下幾點(diǎn):(1)由于共用體變量的所有成員都共用同一內(nèi)存,因此在某一時(shí)刻只能存放其中的一個(gè)成員,即某一時(shí)刻只有一個(gè)成員起作用,而其他的成員都不起作用。例如,在執(zhí)行完以下語(yǔ)句后:
a.i=10; a.c=’d’; a.f=14.8;共用體所占的內(nèi)存中存放的數(shù)據(jù)是14.8。因此可以看出,共用體變量在存放成員時(shí)采用的是覆蓋技術(shù),即在共用體變量中有意義的成員是最后一次存放的成員,任何新數(shù)據(jù)的存入都會(huì)覆蓋掉原有的數(shù)據(jù)。(2)不能對(duì)共用體變量名賦值,也不能在定義共用體變量時(shí)對(duì)共用體變量進(jìn)行初始化。例如,以下程序是錯(cuò)誤的:
union { inti; charc; floatf; }a={10,’a’,5.6};(3)可以通過(guò)指針變量引用共用體變量中的成員。例如:
uniondata﹡p,a; p=&a; p—>i=10;(4)不能將共用體變量作為函數(shù)參數(shù),函數(shù)也不能返回共用體變量。(5)結(jié)構(gòu)體類型和共用體類型在定義時(shí)可以互相嵌套。※共用體變量最大的用途是將不可能同時(shí)出現(xiàn)的數(shù)據(jù)項(xiàng)放在同一段內(nèi)存當(dāng)中,從而達(dá)到節(jié)省內(nèi)存空間的目的。
[Return]10.6枚舉類型在實(shí)際的應(yīng)用中,某些變量的取值范圍可能很小,可能只有僅僅幾個(gè)值。例如表示方向、顏色、一周中的周一至周日等。C語(yǔ)言為了增加程序的可讀性,在ANSIC標(biāo)準(zhǔn)后加入了“枚舉”類型,在這里枚舉的意思是將某種變量可能取的值一一列舉出來(lái),因此如果一個(gè)變量被定義成枚舉類型,那么該變量所能取的值只能是枚舉類型中所列出的值。枚舉類型的一般定義形式如下:
enum枚舉類型名{枚舉元素1,枚舉元素2,…,枚舉元素n};例如:
enumcolor{red,green,blue};以上定義了一個(gè)枚舉類型color,根據(jù)該類型可以定義枚舉變量,枚舉變量的取值范圍只能是“red、green、blue”中的某一值。
枚舉變量的定義形式可以分為三種:(1)先定義枚舉類型后定義枚舉變量。例如:
enumcolor{red,green,blue}; colora,b;(2)定義枚舉類型的同時(shí)定義變量。例如:
enumcolor{red,green,blue}a,b;(3)定義匿名枚舉變量。例如:
enum{red,green,blue}a,b;
當(dāng)使用枚舉變量時(shí),需要注意以下幾點(diǎn):(1)在給枚舉變量賦值時(shí),只能將定義枚舉類型時(shí)所列出的元素值賦給該變量。例如:
a=red; b=blue;(2)枚舉類型所列出的元素值并不是字符串,而是整型常量,并且這些常量都是有值的,C語(yǔ)言在進(jìn)行編譯時(shí),會(huì)按照定義的順序?qū)⑺鼈兊闹抵脼?、1、2、…,因此枚舉元素又通常被稱為枚舉常量。例如,上面定義的枚舉類型color中各枚舉常量的值分別為:red為0,green為1,blue為2。并且這些枚舉常量的值還可以以整數(shù)的形式輸出。例如:
colora; a=green; printf(“%d”,a);/*輸出的結(jié)果為2*/(3)不能將非枚舉常量之外的值賦給枚舉變量。例如,以下語(yǔ)句是錯(cuò)誤的:a=3;(4)枚舉常量可以參與整數(shù)運(yùn)算,可以進(jìn)行算術(shù)、關(guān)系等運(yùn)算。例如:
if(red>green) prinf(“right!”);※從上面可以看出,枚舉常量實(shí)際就是整型常量,那么它們還有什么必要存在呢?實(shí)際上使用枚舉類型主要能帶來(lái)兩點(diǎn)好處:一是枚舉常量限定了變量的取值范圍。例如,上面定義的枚舉變量a只能取red,green和blue其中之一的值;再次使用枚舉常量可以增加程序的可讀性。例如,定義一個(gè)含有每周七天的枚舉類型:
enumweek{mon,tue,wed,thu,fri,sat,sun}today;在這里使用today=mon;就要比today=1;的可讀性要強(qiáng)的多。
例10-6枚舉類應(yīng)用舉例。/*exam10-6*/#include“stdio.h”main(){enumcolor{red,green,blue,black};enumcolorc;for(c=red;c<=black;c++){ if(c==red)printf(“Itisred\n”); elseif(c==green) pri
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州電力職業(yè)技術(shù)學(xué)院《Python編程原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)幼兒師范高等??茖W(xué)校《制冷原理與低溫工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025重慶建筑安全員B證考試題庫(kù)及答案
- 貴陽(yáng)康養(yǎng)職業(yè)大學(xué)《建筑工程識(shí)圖綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《插畫創(chuàng)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年云南建筑安全員-B證考試題庫(kù)附答案
- 廣州醫(yī)科大學(xué)《高頻電子電路》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025海南省安全員-B證考試題庫(kù)附答案
- 2025云南省安全員-B證考試題庫(kù)及答案
- YBT 6273-2024《蘭炭機(jī)械強(qiáng)度測(cè)定方法》
- 醫(yī)療技術(shù)臨床應(yīng)用管理檔案(姓名+工號(hào))
- 機(jī)加工工作計(jì)劃安排
- 習(xí)慣性違章培訓(xùn)
- 河北省石家莊市橋西區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末地理試卷
- 《工程造價(jià)管理 第2版》 課件 第一章 工程造價(jià)管理概論
- 中國(guó)郵政儲(chǔ)蓄銀行員工違規(guī)行為處理辦法
- 2023年長(zhǎng)沙市中考數(shù)學(xué)真題試卷及答案
- 《電力設(shè)備消防典型準(zhǔn)則》(DL5027-2022)
- 米吳科學(xué)漫畫奇妙萬(wàn)象篇
- 河南省鄭州市金水區(qū)2022-2023學(xué)年三年級(jí)上學(xué)期期末數(shù)學(xué)試卷
評(píng)論
0/150
提交評(píng)論