構(gòu)造數(shù)據(jù)類(lèi)型及其應(yīng)用_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第10章 構(gòu)造數(shù)據(jù)類(lèi)型及其應(yīng)用,2,第10章 構(gòu)造數(shù)據(jù)類(lèi)型及其應(yīng)用,10.1 結(jié)構(gòu)體數(shù)據(jù)類(lèi)型 10.2 結(jié)構(gòu)體類(lèi)型變量 10.3 結(jié)構(gòu)體數(shù)組 10.4 結(jié)構(gòu)體指針10.5 結(jié)構(gòu)體變量與函數(shù) 10.6 內(nèi)存的動(dòng)態(tài)存儲(chǔ)分配技術(shù) 10.7 結(jié)構(gòu)體應(yīng)用實(shí)例 10.8 共用體 10.9 枚舉 10.10 自定義類(lèi)型 10.11 小結(jié),3,10.1 結(jié)構(gòu)體數(shù)據(jù)類(lèi)型,10.1.1 什么是結(jié)構(gòu)體10.1.2 如何定義結(jié)構(gòu)體

2、,4,10.1.1 什么是結(jié)構(gòu)體,“結(jié)構(gòu)體”是一種構(gòu)造類(lèi)型,它由若干“成員”(或稱(chēng)為域)組成。 每一個(gè)成員可以是一個(gè)基本數(shù)據(jù)類(lèi)型或者又是一個(gè)構(gòu)造類(lèi)型。不同的結(jié)構(gòu)體類(lèi)型可根據(jù)需要,由不同的成員組成。但對(duì)于某個(gè)具體的結(jié)構(gòu)體類(lèi)型,其成員的數(shù)量必須是固定的,這和數(shù)組是相同的。但該結(jié)構(gòu)體中各個(gè)成員的類(lèi)型可以不同,這是結(jié)構(gòu)體和數(shù)組的區(qū)別。,5,10.1.2 如何定義結(jié)構(gòu)體,結(jié)構(gòu)體既是一種“構(gòu)造”而成的數(shù)據(jù)類(lèi)型,那么在說(shuō)明和使用之前必須先定義它

3、,也就是構(gòu)造它。如同在說(shuō)明和調(diào)用函數(shù)之前要先定義函數(shù)一樣。定義一個(gè)結(jié)構(gòu)體類(lèi)型的一般形式為:struct 結(jié)構(gòu)體類(lèi)型名{類(lèi)型名1 結(jié)構(gòu)體成員名1;類(lèi)型名2 結(jié)構(gòu)體成員名2;……類(lèi)型名n 結(jié)構(gòu)體成員名n;};,6,10.2 結(jié)構(gòu)體類(lèi)型變量,10.2.1 如何定義結(jié)構(gòu)體變量10.2.2 如何引用結(jié)構(gòu)體變量10.2.3 如何初始化結(jié)構(gòu)體變量,7,10.2.1 如何定義結(jié)構(gòu)體變量,定義結(jié)構(gòu)變量有3種方法:先

4、定義結(jié)構(gòu)體再定義結(jié)構(gòu)體變量;在定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體變量;直接定義結(jié)構(gòu)體變量。下面以定義員工信息的結(jié)構(gòu)體變量為例進(jìn)行說(shuō)明。(1)先定義結(jié)構(gòu),再說(shuō)明結(jié)構(gòu)變量struct 結(jié)構(gòu)體類(lèi)型名 結(jié)構(gòu)體變量名表列; (2)在定義結(jié)構(gòu)類(lèi)型的同時(shí)說(shuō)明結(jié)構(gòu)變量struct 結(jié)構(gòu)體類(lèi)型名{……}結(jié)構(gòu)體變量名表列;(3)直接說(shuō)明結(jié)構(gòu)變量struct {……}結(jié)構(gòu)體變量名表列;,8,10.2.2 如何引用結(jié)構(gòu)體

5、變量,C 規(guī)定引用結(jié)構(gòu)體成員有兩種方式:用結(jié)構(gòu)體成員運(yùn)算符方式和指針?lè)绞?。指針?lè)绞皆谝院蟮恼鹿?jié)中介紹,這里主要介紹結(jié)構(gòu)體成員運(yùn)算符方式。結(jié)構(gòu)體成員運(yùn)算符引用結(jié)構(gòu)體成員的形式為: . 【例10-1】本實(shí)例演示了結(jié)構(gòu)體變量的輸入和輸出。,9,10.2.3 如何初始化結(jié)構(gòu)體變量,由于結(jié)構(gòu)體類(lèi)型變量中包含各類(lèi)不同數(shù)據(jù)類(lèi)型的成員,所以結(jié)構(gòu)體類(lèi)型變量的初始化就略顯復(fù)雜。結(jié)構(gòu)體變量初始化的一般形式如下:struct 結(jié)構(gòu)體名 結(jié)

6、構(gòu)體變量名={各成員初始數(shù)據(jù)}; 【例10-2】本實(shí)例演示了外部存儲(chǔ)類(lèi)型的結(jié)構(gòu)體變量初始化的實(shí)現(xiàn)。 【例10-3】本實(shí)例演示了靜態(tài)存儲(chǔ)類(lèi)型的結(jié)構(gòu)體變量初始化的實(shí)現(xiàn)。 【例10-4】本實(shí)例演示了將一個(gè)結(jié)構(gòu)體變量直接賦值給另一個(gè)結(jié)構(gòu)體變量的實(shí)現(xiàn)。,10,10.3 結(jié)構(gòu)體數(shù)組,10.3.1 如何定義結(jié)構(gòu)體數(shù)組10.3.2 如何初始化結(jié)構(gòu)體數(shù)組10.3.3 如何引用結(jié)構(gòu)體數(shù)組,11,10.3.1 如何定義結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)

7、體數(shù)組的定義方法和結(jié)構(gòu)體變量相似,只需說(shuō)明它為數(shù)組類(lèi)型,多用一個(gè)方括號(hào)而已。結(jié)構(gòu)體數(shù)組的定義有3種方法:先定義結(jié)構(gòu)再定義結(jié)構(gòu)體數(shù)組、在定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體數(shù)組、直接定義結(jié)構(gòu)體數(shù)組。(1)先定義結(jié)構(gòu),再說(shuō)明結(jié)構(gòu)變量struct 結(jié)構(gòu)體類(lèi)型名 結(jié)構(gòu)體數(shù)組; (2)在定義結(jié)構(gòu)類(lèi)型的同時(shí)說(shuō)明結(jié)構(gòu)變量struct 結(jié)構(gòu)體類(lèi)型名{……}結(jié)構(gòu)體數(shù)組; (3)直接說(shuō)明結(jié)構(gòu)變量struct {……}結(jié)構(gòu)

8、體數(shù)組;,12,10.3.2 如何初始化結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體數(shù)組也是數(shù)組,數(shù)組定義時(shí)系統(tǒng)只能對(duì)外部的或靜態(tài)的結(jié)構(gòu)體數(shù)組初始化。數(shù)組初始化時(shí),將初始化的數(shù)據(jù)放在一對(duì)花括號(hào)內(nèi)。在對(duì)結(jié)構(gòu)體數(shù)組初始化時(shí),也要將每個(gè)元素的初始化數(shù)據(jù)用花括號(hào)括起來(lái)。由于每個(gè)結(jié)構(gòu)體變量本身初始化時(shí)又需用花括號(hào)括起來(lái),所以,對(duì)結(jié)構(gòu)體數(shù)組初始化至少有兩層花括號(hào)。[存儲(chǔ)類(lèi)型] struct 結(jié)構(gòu)體名 結(jié)構(gòu)體數(shù)組名[ n]={初始數(shù)據(jù)表列};,13,10.3.3

9、 如何引用結(jié)構(gòu)體數(shù)組,一個(gè)結(jié)構(gòu)體數(shù)組中的元素相當(dāng)于一個(gè)結(jié)構(gòu)體變量,所以引用結(jié)構(gòu)體數(shù)組元素的方法和引用結(jié)構(gòu)體變量的方法一樣。(1)引用數(shù)組中某個(gè)元素中的成員,形式如下:數(shù)組元素.成員名(2)可以將結(jié)構(gòu)體數(shù)組元素賦值給同類(lèi)型的結(jié)構(gòu)體變量,也可以賦值給同一結(jié)構(gòu)體類(lèi)型數(shù)組中另外一個(gè)元素。 (3)同結(jié)構(gòu)體變量相同,不能將結(jié)構(gòu)體數(shù)組元素作為一個(gè)整體進(jìn)行直接輸入或輸出。 【例10-5】本實(shí)例演示了輸入輸出5名員工的信息并計(jì)算員工的平均

10、工資。,14,10.4 結(jié)構(gòu)體指針,10.4.1 結(jié)構(gòu)體類(lèi)型變量的指針10.4.2 結(jié)構(gòu)體類(lèi)型數(shù)組指針,15,10.4.1 結(jié)構(gòu)體類(lèi)型變量的指針,指向結(jié)構(gòu)體變量的指針又稱(chēng)為結(jié)構(gòu)體指針,它是一個(gè)指針變量,它指向一個(gè)結(jié)構(gòu)體變量,它的值是所指向的結(jié)構(gòu)體變量的首地址。 結(jié)構(gòu)體指針的定義類(lèi)似于普通指針的定義,其一般形式如下:struct結(jié)構(gòu)體名 *結(jié)構(gòu)體指針名 通過(guò)結(jié)構(gòu)體指針來(lái)引用結(jié)構(gòu)體變量的成員,一般形式如下:(*結(jié)構(gòu)體指

11、針名).成員名 【代碼10-6】演示了通過(guò)結(jié)構(gòu)體指針來(lái)引用結(jié)構(gòu)體變量的成員。,16,10.4.2 結(jié)構(gòu)體類(lèi)型數(shù)組指針,一個(gè)指針變量可以指向一個(gè)數(shù)組,它存儲(chǔ)的是數(shù)組的首地址。那么指針變量也可以指向一個(gè)結(jié)構(gòu)體數(shù)組,稱(chēng)為結(jié)構(gòu)體數(shù)組指針。同樣結(jié)構(gòu)體數(shù)組指針存儲(chǔ)的也是結(jié)構(gòu)體數(shù)組的首地址。 【例10-7】本實(shí)例演示了結(jié)構(gòu)體數(shù)組指針的使用。,17,10.5 結(jié)構(gòu)體變量與函數(shù),10.5.1 結(jié)構(gòu)體變量作函數(shù)參數(shù)10.5.2 結(jié)構(gòu)體變量

12、作函數(shù)的返回值,18,10.5.1 結(jié)構(gòu)體變量作函數(shù)參數(shù),用結(jié)構(gòu)體變量的成員做函數(shù)的實(shí)參,形參和結(jié)構(gòu)體變量成員的類(lèi)型相同,調(diào)用函數(shù)時(shí)將實(shí)參傳遞給形參。當(dāng)然,這屬于參數(shù)傳遞的“值傳遞”方式?!爸祩鬟f”的方法和普通變量做參數(shù)的用法是一樣的。用結(jié)構(gòu)體指針或結(jié)構(gòu)體數(shù)組指針做實(shí)參,用指針做形參,將結(jié)構(gòu)體變量或結(jié)構(gòu)體數(shù)組的地址傳給形參,這屬于函數(shù)參數(shù)傳遞的“傳地址”方式。 【例10-8】本實(shí)例演示了函數(shù)參數(shù)傳遞的“傳地址”方式的使用。

13、【例10-9】本實(shí)例演示了用結(jié)構(gòu)變量作函數(shù)參數(shù)的使用。,19,10.5.2 結(jié)構(gòu)體變量作函數(shù)的返回值,函數(shù)的返回值可以是整型、字符型、實(shí)型、數(shù)組和指針類(lèi)型。在新的C語(yǔ)言的標(biāo)準(zhǔn)中,允許函數(shù)的返回值是一個(gè)結(jié)構(gòu)體類(lèi)型的變量?!纠?0-10】本實(shí)例演示了利用函數(shù)實(shí)現(xiàn)輸入輸出員工的信息并計(jì)算員工的平均工資。,20,10.6 內(nèi)存的動(dòng)態(tài)存儲(chǔ)分配技術(shù),10.6.1 內(nèi)存的動(dòng)態(tài)存儲(chǔ)分配10.6.2 鏈表10.6.3 動(dòng)態(tài)存儲(chǔ)分配函數(shù)1

14、0.6.4 創(chuàng)建鏈表10.6.5 查詢(xún)鏈表10.6.6 鏈表結(jié)點(diǎn)的插入10.6.7 鏈表結(jié)點(diǎn)的刪除,21,10.6.1 內(nèi)存的動(dòng)態(tài)存儲(chǔ)分配,動(dòng)態(tài)存儲(chǔ)分配技術(shù),就是在程序運(yùn)行期間,根據(jù)需要臨時(shí)分配內(nèi)存單元來(lái)存放所需的數(shù)據(jù),當(dāng)數(shù)據(jù)不用時(shí)可以隨時(shí)釋放它所占用的存儲(chǔ)空間。釋放掉的存儲(chǔ)空間又可以分配給其他數(shù)據(jù)作為存儲(chǔ)空間。這種分配和釋放是受程序控制的,它分配的空間是系統(tǒng)的自由空間,釋放時(shí)又還回系統(tǒng),成為自由空間。,22,10.6.

15、2 鏈表,需要一種方法,實(shí)現(xiàn)在程序需要存儲(chǔ)一個(gè)雇員的信息時(shí),就可以分配一個(gè)空間來(lái)存儲(chǔ)該雇員的信息。而如果某雇員的信息沒(méi)有用了,又可以將它所占用的存儲(chǔ)空間釋放掉。而動(dòng)態(tài)存儲(chǔ)分配就是很好的選擇。 利用結(jié)構(gòu)體變量和指針來(lái)實(shí)現(xiàn)鏈表的方法。鏈表是一種常見(jiàn)的重要數(shù)據(jù)結(jié)構(gòu),它是動(dòng)態(tài)的進(jìn)行存儲(chǔ)單元分配的一種結(jié)構(gòu)。,23,10.6.3 動(dòng)態(tài)存儲(chǔ)分配函數(shù),C語(yǔ)言新標(biāo)準(zhǔn)ANSI C要求各C編譯版本提供的標(biāo)準(zhǔn)庫(kù)函數(shù)中包括動(dòng)態(tài)分配存儲(chǔ)的函數(shù)。常用的有4個(gè),

16、它們是:malloc()函數(shù)、calloc()函數(shù)、free()函數(shù)和realloc()函數(shù)。 【例10-11】本實(shí)例演示分配一段內(nèi)存空間用來(lái)存儲(chǔ)員工的信息。 【例10-12】本實(shí)例演示分配50個(gè)float類(lèi)型的內(nèi)存空間。 【例10-13】本實(shí)例演示了分配一塊區(qū)域存儲(chǔ)一個(gè)雇員信息的實(shí)現(xiàn)。,24,10.6.4 創(chuàng)建鏈表,對(duì)鏈表的主要操作有以下4種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)。建立鏈表就是指從無(wú)到有的建立

17、起一個(gè)鏈表,即一個(gè)一個(gè)依次的輸入每個(gè)結(jié)點(diǎn)的數(shù)據(jù),并建立前后相連的關(guān)系。下面通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明建立鏈表的操作。【例10-14】建立一個(gè)鏈表,存放n個(gè)雇員的數(shù)據(jù)(雇員信息只包括雇員號(hào)no和雇員姓名name)。,25,10.6.5 查詢(xún)鏈表,鏈表的查詢(xún),也就是訪(fǎng)問(wèn)鏈表中的某個(gè)結(jié)點(diǎn)或所有結(jié)點(diǎn)。經(jīng)常要用鏈表中結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行各種運(yùn)算,或?qū)Y(jié)點(diǎn)成員的值進(jìn)行修改,這些都要涉及到鏈表的查詢(xún)。所以鏈表的查詢(xún)操作非常有用。下面通過(guò)例題來(lái)說(shuō)明查詢(xún)鏈表中某

18、個(gè)結(jié)點(diǎn)的操作。【例10-15】已知某個(gè)雇員的雇員號(hào),編寫(xiě)一個(gè)函數(shù),在鏈表中按雇員號(hào)查找該雇員結(jié)點(diǎn)。,26,10.6.6 鏈表結(jié)點(diǎn)的插入,向一個(gè)已有的鏈表中插入一個(gè)結(jié)點(diǎn),關(guān)鍵是要修改新插入結(jié)點(diǎn)與它之前及之后結(jié)點(diǎn)的連接問(wèn)題。如原來(lái)手拉手的小朋友1、2、3、4,現(xiàn)在要在3、4兩個(gè)小朋友之間插入一個(gè)小朋友,那么新小朋友和4小朋友拉手,再讓3小朋友和新插入小朋友拉手就可以了。下面通過(guò)例題來(lái)說(shuō)明在鏈表中插入一個(gè)新結(jié)點(diǎn)的操作。【例10-16

19、】編寫(xiě)一個(gè)函數(shù),在鏈表head中的p指針?biāo)傅慕Y(jié)點(diǎn)后插入一個(gè)新雇員結(jié)點(diǎn)。,27,10.6.7 鏈表結(jié)點(diǎn)的刪除,從一個(gè)鏈表中刪除一個(gè)結(jié)點(diǎn),并不一定是真的將它從內(nèi)存中刪除。而是將它從鏈表中分離,即改變?cè)湵碇袆h除結(jié)點(diǎn)前后結(jié)點(diǎn)之間的關(guān)系。如果被刪除結(jié)點(diǎn)的空間要還回給內(nèi)存,可以進(jìn)一步將該結(jié)點(diǎn)占用的內(nèi)存空間釋放。 【例10-17】已知某個(gè)雇員的雇員號(hào),編寫(xiě)一個(gè)函數(shù),將該雇員從鏈表中刪除。,28,10.7 結(jié)構(gòu)體應(yīng)用實(shí)例,【例10-18】本實(shí)

20、例演示了向有序雇員鏈表中插入結(jié)點(diǎn)(結(jié)點(diǎn)的順序是按照雇員號(hào)遞增排序的)。 【例10-19】本實(shí)例演示了鏈表的所有常規(guī)操作的實(shí)現(xiàn)。,29,10.8 共用體,10.8.1 什么是共用體10.8.2 如何聲明共用體10.8.3 如何引用共用體變量成員10.8.4 共用體的使用注意事項(xiàng),30,10.8.1 什么是共用體,“共用體”也是一種構(gòu)造類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。它允許不同長(zhǎng)度、不同類(lèi)型的數(shù)據(jù)共享同一塊存儲(chǔ)空間,也就是大家共用一塊內(nèi)存

21、區(qū)域,聯(lián)合起來(lái)。所以,“共用體”又稱(chēng)為“聯(lián)合”。如果一個(gè)變量是“共用體”類(lèi)型,在程序運(yùn)行的不同時(shí)期,該變量可能是不同的類(lèi)型和長(zhǎng)度。,31,10.8.2 如何聲明共用體,定義一個(gè)共用體類(lèi)型的一般形式為:union 共用體名{成員表列;};成員表列中含有若干成員,成員的一般形式為: 類(lèi)型說(shuō)明符 成員名;,32,10.8.3 如何引用共用體變量成員,同結(jié)構(gòu)體類(lèi)似,共用體變量要先說(shuō)明后引用。引用時(shí)不能直接引用共用體變量

22、,而要引用共用體變量中的成員。C規(guī)定引用共用體成員有兩種方式:用“.”成員運(yùn)算符方式和指針?lè)绞??!?”成員運(yùn)算符方式引用共用體成員的形式為: . 通過(guò)共用體指針引用共用體成員的形式為:共用體指針名->成員名【例10-20】本實(shí)例演示了共用體變量的輸入和輸出。,33,10.8.4 共用體的使用注意事項(xiàng),(1)在結(jié)構(gòu)中各成員有各自的內(nèi)存空間,一個(gè)結(jié)構(gòu)變量的總長(zhǎng)度是各成員長(zhǎng)度之和。而在“共用體”中,各成員共享一段內(nèi)

23、存空間,一個(gè)共用體變量的長(zhǎng)度等于各成員中最長(zhǎng)的長(zhǎng)度。(2)這里所謂的共享不是指把多個(gè)成員同時(shí)裝入一個(gè)共用體變量?jī)?nèi),而是指該共用體變量可被賦予任一成員值,但每次只能賦一種值,賦入新值則覆蓋舊值。(3)共用體變量的地址和它的各個(gè)成員的地址都是同一個(gè)地址。(4)不能對(duì)共用體變量名賦值,也不能通過(guò)引用變量名來(lái)得到成員的值。(5)新標(biāo)準(zhǔn)中允許將共用體變量用作函數(shù)的參數(shù),可以使用指針指向共用體變量,即允許使用指向共用體變量的指針。(6)共

24、用體類(lèi)型和結(jié)構(gòu)體類(lèi)型可以相互嵌套,即共用體類(lèi)型中可以有結(jié)構(gòu)體類(lèi)型,結(jié)構(gòu)體類(lèi)型中也可以有共用體類(lèi)型。(7)可以定義共用體數(shù)組,共用體中的成員也可以有數(shù)組。如前面定義的共用體類(lèi)型department中的office是字符數(shù)組。 【例10-21】本實(shí)例演示了如何存儲(chǔ)學(xué)校人員的基本信息。,34,10.9 枚舉,10.9.1 如何定義枚舉類(lèi)型10.9.2 如何聲明枚舉類(lèi)型變量10.9.3 如何引用枚舉類(lèi)型變量10.9.4 枚舉

25、類(lèi)型的實(shí)用注意事項(xiàng),35,10.9.1 如何定義枚舉類(lèi)型,“枚舉”就是指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍。在“枚舉”類(lèi)型的定義中列舉出所有可能的取值,被說(shuō)明為該“枚舉”類(lèi)型的變量取值不能超過(guò)定義的范圍。 枚舉類(lèi)型定義的一般形式為:enum 枚舉名{ 枚舉值表;};,36,10.9.2 如何聲明枚舉類(lèi)型變量,如同結(jié)構(gòu)和共用體一樣,枚舉變量也可用3種不同的方式聲明,即先定義后聲明、同時(shí)定義聲明或

26、直接聲明。,37,10.9.3 如何引用枚舉類(lèi)型變量,在系統(tǒng)中枚舉類(lèi)型變量做了一些處理,所以,在引用枚舉類(lèi)型變量時(shí)有以下規(guī)定:(1)由枚舉類(lèi)型變量的定義可知,為枚舉類(lèi)型變量賦值只能是枚舉值表中的一個(gè)。(2)在C語(yǔ)言的編譯系統(tǒng)中,系統(tǒng)對(duì)枚舉元素本身定義了一個(gè)表示序號(hào)的數(shù)值。從0開(kāi)始順序定義為0、1、2…。 【例10-22】本實(shí)例演示了輸出枚舉元素的值。,38,10.9.4 枚舉類(lèi)型的實(shí)用注意事項(xiàng),(1)枚舉元素的值雖然在編譯時(shí)

27、由系統(tǒng)指定,系統(tǒng)指定的值是按照枚舉元素所處的順序由0開(kāi)始,即0、1……。但是,枚舉元素的值也可以在定義的時(shí)候由程序員指定。 (2)枚舉值可以在條件判斷中進(jìn)行比較。 (3)枚舉類(lèi)型變量的存儲(chǔ)類(lèi)型也有自動(dòng)、外部和靜態(tài)3種。 (4)如果枚舉類(lèi)型說(shuō)明在函數(shù)的內(nèi)部,那么只能在該函數(shù)內(nèi)部定義該枚舉類(lèi)型的變量。(5)在枚舉類(lèi)型定義中,枚舉元素是用戶(hù)定義的標(biāo)識(shí)符。 (6)枚舉類(lèi)型的變量可以作循環(huán)變量、條件表達(dá)式等。(7)作為枚舉元素的標(biāo)識(shí)符

28、不能在程序中再做其他用途。(8)枚舉元素不是字符串,所以不能用下面的方法輸出字符串“mon”。printf(“ %s \n”,mon); 【例10-23】一個(gè)月30天分別循環(huán)做4件事a、b、c、d。如1號(hào)做a事、2號(hào)做b事、3號(hào)做c事、4號(hào)做d事、5號(hào)做a事、6號(hào)做b事、……。編寫(xiě)程序輸出每天要做的事情。,39,10.10 自定義類(lèi)型,C語(yǔ)言不僅提供了豐富的數(shù)據(jù)類(lèi)型,而且還允許由用戶(hù)自己定義類(lèi)型說(shuō)明符,也就是說(shuō)允許由用戶(hù)為數(shù)據(jù)

29、類(lèi)型取“別名”。就像有的人有一個(gè)大名,又有一個(gè)小名一樣。類(lèi)型定義符typedef即可用來(lái)完成此功能。typedef定義的一般形式為: typedef 原類(lèi)型名 新類(lèi)型名,40,10.11 小結(jié),主要講解了結(jié)構(gòu)體、共用體、枚舉及自定義數(shù)據(jù)類(lèi)型。另外講解了內(nèi)存的動(dòng)態(tài)分配技術(shù),及鏈表類(lèi)型的數(shù)據(jù)結(jié)構(gòu)的簡(jiǎn)單操作。 動(dòng)態(tài)存儲(chǔ)分配技術(shù),就是在程序的運(yùn)行期間,根據(jù)需要臨時(shí)分配內(nèi)存單元用來(lái)存放有用的數(shù)據(jù),當(dāng)數(shù)據(jù)不再需要時(shí)可以隨時(shí)釋放它所占用的存儲(chǔ)

30、空間。釋放掉的存儲(chǔ)空間又可以分配給其他數(shù)據(jù)作為存儲(chǔ)空間。 “共用體”也是一種構(gòu)造類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。它允許不同長(zhǎng)度不同類(lèi)型的數(shù)據(jù)共享同一塊存儲(chǔ)空間,也就是大家共用一塊內(nèi)存區(qū)域,聯(lián)合起來(lái)。所以,“共用體”又稱(chēng)為“聯(lián)合”。枚舉”就是指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍。在“枚舉”類(lèi)型的定義中列舉出所有可能的取值,被說(shuō)明為該“枚舉”類(lèi)型的變量取值不能超過(guò)定義的范圍。自定義類(lèi)型說(shuō)明符就是給已經(jīng)存在的數(shù)據(jù)類(lèi)型重新命名一個(gè)新

溫馨提示

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

評(píng)論

0/150

提交評(píng)論