C++課件第5章 構(gòu)造數(shù)據(jù)類型.ppt_第1頁
C++課件第5章 構(gòu)造數(shù)據(jù)類型.ppt_第2頁
C++課件第5章 構(gòu)造數(shù)據(jù)類型.ppt_第3頁
C++課件第5章 構(gòu)造數(shù)據(jù)類型.ppt_第4頁
C++課件第5章 構(gòu)造數(shù)據(jù)類型.ppt_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章構(gòu)造數(shù)據(jù)類型,第5章構(gòu)造數(shù)據(jù)類型,第5章構(gòu)造數(shù)據(jù)類型,1。掌握枚舉類型的使用;2.深刻理解數(shù)組的概念,掌握數(shù)組應(yīng)用的一般方法;3.深刻理解指針的概念,掌握指針的使用;4.注意指針和數(shù)組之間的區(qū)別。將使用多個(gè)指針以及指針和數(shù)組的各種混合,并將分配動(dòng)態(tài)數(shù)組;5.理解字符串的概念并使用字符串;6.理解引用的概念,掌握引用函數(shù)參數(shù)的用法;7.掌握結(jié)構(gòu)類型的使用。學(xué)習(xí)目標(biāo),c語言編程教程第5章,構(gòu)造數(shù)據(jù)類型,5.1枚舉類型,1。枚舉類型的定義:“枚舉”是指枚舉所有可能的變量值,變量值僅限于枚舉常數(shù)。枚舉類型聲明的一般形式如下:枚舉類型名和枚舉常量是標(biāo)識符,它們遵循標(biāo)識符的命名規(guī)則。定義枚舉類型時(shí),

2、為枚舉類型變量定義了幾個(gè)常量來取值,這些常量稱為枚舉常量。當(dāng)沒有為每個(gè)枚舉常數(shù)指定值時(shí),其值默認(rèn)為0、1、2和;定義枚舉類型時(shí),還可以使用賦值號來分別指定枚舉常量的值。枚舉類型名稱枚舉常量1、枚舉常量2、枚舉常量n;枚舉!C語言編程教程的第5章構(gòu)造了數(shù)據(jù)類型并枚舉了類型的定義:示例1:枚舉工作日周日、周一、周二、周三、周四、周五、周六;定義了七個(gè)枚舉常數(shù)和枚舉類型weekday。枚舉常數(shù)有對應(yīng)的默認(rèn)整數(shù):SUN是0,MON是1,TUE是2,SAT是6。例2:列舉城市北京、上海、天津=5,重慶;枚舉常數(shù)北京的值為0,上海的值為1,天津的值為5。對于指定值之后沒有指定值的枚舉常量,編譯器將為其分配

3、前一個(gè)常量值加1(下一個(gè)整數(shù)),因此重慶的值為6。C語言編程教程的第5章構(gòu)建了數(shù)據(jù)類型。枚舉類型定義的描述定義枚舉類型后,您可以使用枚舉常量和枚舉類型來定義變量。定義枚舉變量的方法與定義其他變量的方法相同。列舉城市,城市;城市,城市;城市和城市枚舉類型的變量名有兩種定義方式。枚舉類型變量在定義枚舉類型時(shí)也可以定義枚舉北京、上海、天津=5、重慶市、市;定義枚舉類型時(shí)可以定義枚舉類型變量。上海、天津=5,重慶市、北京市可以省略。定義變量時(shí),您可以順便給出一個(gè)初始值。如果你沒有給出初始值,默認(rèn)的初始值是一個(gè)隨機(jī)的無意義的數(shù)字。C語言編程教程第5章:構(gòu)造數(shù)據(jù)類型和使用枚舉類型:用枚舉類型設(shè)置枚舉變量后

4、,您可以為枚舉變量賦值并執(zhí)行其他操作。當(dāng)給枚舉變量賦值時(shí),它們的值必須是相同的枚舉類型。否則,編譯期間會(huì)出現(xiàn)錯(cuò)誤。工作日d1、d2、d3、D4;d1=SUND2=6;/誤差d3=上海;/錯(cuò)誤分配給d2的值是6的整數(shù),不是枚舉常數(shù);您可以將整數(shù)值強(qiáng)制轉(zhuǎn)換為相同類型的枚舉常數(shù),并將它們分配給枚舉變量:D2=(weekday)6;枚舉類型的枚舉常量和變量可以執(zhí)行算術(shù)運(yùn)算和關(guān)系運(yùn)算。當(dāng)對枚舉類型執(zhí)行算術(shù)和關(guān)系運(yùn)算時(shí),枚舉值被轉(zhuǎn)換為整數(shù)值以參與運(yùn)算,結(jié)果是整數(shù)值。因此,如果要將結(jié)果賦給枚舉變量,還必須將結(jié)果轉(zhuǎn)換為枚舉值。D1=D1 2;/是錯(cuò)誤的,因?yàn)榻Y(jié)果是int。它需要轉(zhuǎn)換為枚舉類型:d1=(工作日)

5、(D1 2);c語言編程教程第5章構(gòu)造數(shù)據(jù)類型,c語言編程教程第5章構(gòu)造數(shù)據(jù)類型,示例5-1輸入城市代碼并輸出城市名稱。運(yùn)行結(jié)果:輸入城市編號(-1退出):1上海8無效城市編號!-1。C語言編程教程第5章構(gòu)建了數(shù)據(jù)類型;5.2數(shù)組,數(shù)組:數(shù)組是由一組相同類型的數(shù)據(jù)變量按順序連續(xù)存儲(chǔ)在內(nèi)存中的集合。每個(gè)變量都被稱為數(shù)組元素,屬于相同的數(shù)據(jù)類型,數(shù)組元素用一個(gè)數(shù)組名和一個(gè)方括號中的數(shù)組下標(biāo)來標(biāo)識。數(shù)組可以是一維的或多維的。特征:有幾個(gè)相同類型的數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素之間有一定的順序關(guān)系。第5章,構(gòu)造數(shù)據(jù)類型,5.2.1一維數(shù)組的定義和使用。一維數(shù)組定義的一般形式是:描述:數(shù)組元素的類型可以是除空類

6、型之外的任何基本數(shù)據(jù)類型,也可以是已定義的構(gòu)造數(shù)據(jù)類型;數(shù)組名是用戶定義的標(biāo)識符,用于表示數(shù)組名,即內(nèi)存中數(shù)組元素的起始地址,并且是一個(gè)地址常量。常量表達(dá)式必須是無符號整數(shù)類型的正整數(shù)。指示數(shù)組的大小或長度,即數(shù)組中包含的數(shù)據(jù)元素的數(shù)量。是一個(gè)數(shù)組下標(biāo)運(yùn)算符,用于限制數(shù)組定義中數(shù)組元素的數(shù)量。數(shù)據(jù)類型數(shù)組名常量表達(dá)式;C語言編程教程的第5章構(gòu)建了數(shù)據(jù)類型。請注意,數(shù)組是一種構(gòu)造的數(shù)據(jù)類型,必須在使用它之前定義該類型。5.2.1一維數(shù)組的定義和使用,兩種不同類型的數(shù)組定義如下:int a5/定義了一個(gè)包含5個(gè)元素的整數(shù)數(shù)組工作日b10/定義了一個(gè)包含10個(gè)元素的枚舉數(shù)組b,weekday是定義的

7、枚舉類型。同一語句中可以定義多個(gè)具有相同數(shù)據(jù)類型的數(shù)組。示例:int a110,a220。/同時(shí)定義兩個(gè)整數(shù)數(shù)組。具有相同數(shù)據(jù)類型的簡單變量和數(shù)組也可以在一個(gè)語句中定義。例如:int x,a20。/整數(shù)變量和整數(shù)數(shù)組同時(shí)定義。C語言編程教程第5章構(gòu)造數(shù)據(jù)類型,以及5.2.1一維數(shù)組的定義和使用。定義數(shù)組后,系統(tǒng)將從內(nèi)存中分配一個(gè)連續(xù)的存儲(chǔ)空間,并從第一個(gè)數(shù)據(jù)元素開始依次存儲(chǔ)每個(gè)數(shù)組元素。例如:int a5。/定義了5個(gè)元素的整數(shù)數(shù)組。編程教程的第5章構(gòu)建了數(shù)據(jù)類型。一維數(shù)組初始化指的是在定義數(shù)組時(shí)給數(shù)組中的元素賦值。一般的語法形式是:初始值1,初始值2,初始值n稱為初始值表,由逗號分隔,所有初

8、始值都被括起來。初始值可以是變量表達(dá)式,初始值與數(shù)組元素的對應(yīng)關(guān)系是:初始值I給出數(shù)組的第I個(gè)元素;因此,初始值n的數(shù)量不能超過數(shù)組的大小。如果初始值表中初始值(項(xiàng))的數(shù)量小于數(shù)組的大小,則沒有指定值的數(shù)組元素被賦值為0;但是,初始值表中的項(xiàng)目數(shù)不能為0。示例:工作日b10=周一、周三、周五;當(dāng)所有數(shù)組元素都被賦予初始值時(shí),數(shù)組的大小可以省略,數(shù)組的實(shí)際大小是初始值列表中初始值的個(gè)數(shù)。例如:字符串=a,b,c,d,e;/數(shù)組字符串的實(shí)際大小是5。數(shù)據(jù)類型數(shù)組名常量表達(dá)式=初始值1,初始值2,初始值n;C語言編程教程的第5章構(gòu)建了數(shù)據(jù)類型。一維數(shù)組有兩種訪問操作:訪問數(shù)組元素和讀取數(shù)組元素的地址

9、。數(shù)組元素由數(shù)組名和下標(biāo)來標(biāo)識,它們也被稱為下標(biāo)變量。下標(biāo)變量可以像簡單變量一樣參與各種操作。訪問一維數(shù)組元素的一般語法如下:描述:下標(biāo)表達(dá)式可以是變量表達(dá)式,用于標(biāo)識數(shù)組元素。當(dāng)定義長度為n的一維數(shù)組A時(shí),c指定數(shù)組的下標(biāo)從0開始,然后是0、1、2、3和n-1。對應(yīng)的數(shù)組元素是a0,a1,an-1,所以下標(biāo)表達(dá)式的值應(yīng)該在0,n-1的范圍內(nèi)。a1 2=100/將數(shù)組a的第四個(gè)元素賦給100。數(shù)組名下標(biāo)表達(dá)式;c語言編程教程第5章結(jié)構(gòu)數(shù)據(jù)類型示例5-2學(xué)生成績排序。分析:學(xué)生成績通過鍵盤輸入。當(dāng)輸入負(fù)數(shù)時(shí),輸入結(jié)束。使用直觀的“選擇性排序法”進(jìn)行排序,基本步驟如下:依次比較a0和a1an-1,

10、選擇最大的一個(gè)與a0交換;a0是a0an-1中最大的;依次比較a1和a2an-1,選擇較大的一個(gè)與a1交換;最后,a1是a1an-1中最大的一個(gè);同樣,從i=2到i=n-1,ai依次與ai 1an-1進(jìn)行比較,選擇較大的一個(gè)并存儲(chǔ)在ai中。C語言編程教程第5章構(gòu)造數(shù)據(jù)類型,C語言編程教程第5章構(gòu)造數(shù)據(jù)類型,運(yùn)行結(jié)果:80 90 95 70 -1 95 90 80 70,C語言編程教程第5章構(gòu)造數(shù)據(jù)類型,4。數(shù)組元素的地址由數(shù)組名讀取,其格式如下:因?yàn)樗牡刂凡皇菍?shí)際的地址值,所以這個(gè)地址表達(dá)式稱為符號地址表達(dá)式。例如,一維數(shù)組元素a5的符號地址表達(dá)式是5。如果a是一個(gè)n進(jìn)制數(shù)組,數(shù)組的符號地址

11、表達(dá)式a n所表示的地址就是第n個(gè)元素a n的地址,并且所表示的實(shí)際地址值是:一個(gè)n*sizeof(int)而不是:a n。c語言編程教程的第5章構(gòu)造了數(shù)據(jù)類型和數(shù)組名整數(shù)表達(dá)式;C語言編程教程的第5章構(gòu)建了數(shù)據(jù)類型。當(dāng)使用數(shù)組時(shí),我們應(yīng)該注意這樣一個(gè)事實(shí):在使用數(shù)組時(shí)最常見的錯(cuò)誤是下標(biāo)越界。所謂的下標(biāo)是越界的,即下標(biāo)的值超過了定義數(shù)組時(shí)給定的元素?cái)?shù)。對于這種錯(cuò)誤,編譯器不知道,并且經(jīng)常在運(yùn)行時(shí)出錯(cuò)。因此,應(yīng)特別注意程序設(shè)計(jì)。數(shù)組名是一個(gè)地址常量,不能用作左值(賦值的目標(biāo))。因此,不能將一個(gè)數(shù)組作為一個(gè)整體復(fù)制到另一個(gè)數(shù)組。示例:int a5,c5,I。a=c。/錯(cuò)誤!正確的方法是復(fù)制相應(yīng)的元

12、素,如以下過程所示:對于(I=0;i5;I)ai=ci;/將數(shù)組C中元素的值復(fù)制到數(shù)組C中對應(yīng)的元素上。在函數(shù)中,可以將一維數(shù)組作為函數(shù)的形式參數(shù),接受一維數(shù)組傳遞的地址。5.2.2二維數(shù)組的定義和使用。二維數(shù)組定義的一般形式是:常量表達(dá)式1是第一維的元素個(gè)數(shù),常量表達(dá)式2是第二維的元素個(gè)數(shù)。二維數(shù)組amn是一個(gè)以長度為n的一維數(shù)組為元素的數(shù)組,因此它等價(jià)于以下定義:例如,int M23定義了一個(gè)整數(shù)二維數(shù)組m,數(shù)組m也可以用以下方式定義:typedef int M13/定義一維整數(shù)數(shù)組m1;M1M2;/定義以M1為類型的數(shù)組m,數(shù)據(jù)類型數(shù)組名稱常量表達(dá)式2常量表達(dá)式1;C語言編程教程第5章構(gòu)

13、造數(shù)據(jù)類型,typedef數(shù)據(jù)類型一維數(shù)組名常量表達(dá)式1;一維數(shù)組名二維數(shù)組名常量表達(dá)式2;如果一維數(shù)組描述排列在一行中的數(shù)據(jù),那么二維數(shù)組描述這種數(shù)據(jù)的幾行。因此,二維數(shù)組可以看作是一個(gè)數(shù)學(xué)矩陣。第一維的元素?cái)?shù)是矩陣的列數(shù),第二維的元素?cái)?shù)是矩陣的行數(shù)。二維數(shù)組的定義格式可以寫成:定義二維數(shù)組后,系統(tǒng)為其分配一個(gè)連續(xù)的內(nèi)存空間。二維數(shù)組amn占用內(nèi)存空間的計(jì)算公式為:數(shù)據(jù)類型數(shù)組名的行數(shù)和列數(shù);C語言編程教程的第5章構(gòu)造了數(shù)據(jù)類型sizeof(數(shù)組名);或m*sizeof(a0)?;蛘適*n*sizeof(數(shù)據(jù)類型),int M23的排列順序是:首先在M1 M0排列三個(gè)int元素,形成兩個(gè)一維

14、數(shù)組m0。M0: m00,M01,m02 m1: M10,M11,M12,然后將兩個(gè)一維數(shù)組排列成一個(gè)二維數(shù)組。M0,M1,C語言編程教程第5章:構(gòu)造數(shù)據(jù)類型,初始化二維數(shù)組:初始值表有兩種形式:嵌套初始值表和線性初始值表。(1)嵌套初始值表以二維數(shù)組Mmn為例。嵌套初始值表的格式是:嵌套初始值表由嵌套的一維初始值表組成,每層的形成規(guī)則與一維數(shù)組初始值表相同。int M34=1,2,3,4,3,4,5,6,5,6,7,8;/M個(gè)數(shù)組元素都是在a23=1,0,0,1時(shí)初始化的;/初始化了一些數(shù)組元素,int b3=1,2,3,/初始化d3=1,3,5,5,7,9的所有數(shù)組元素;/初始化所有數(shù)組元

15、素,省略高維元素的個(gè)數(shù),數(shù)據(jù)類型數(shù)組名常量表達(dá)式2常量表達(dá)式1=初始值表;c語言編程教程第5章構(gòu)造數(shù)據(jù)類型,m初始值表=M0初始值表,M1初始值表,Mm-1初始值表mi初始值表=Mi0初始值表,Mi1初始值表,Min-1初始值表;I從0到m-1;線性初值表線性初值表與一維數(shù)組的初值表相同,初值表中的項(xiàng)目數(shù)不超過每一維元素?cái)?shù)(元素總數(shù))的乘積。數(shù)組元素按照內(nèi)存排列的順序從初始值表中取值。以下數(shù)組使用線性初始值表,結(jié)果與使用嵌套初始值表相同。例如:int M34=1,2,3,4,3,4,5,6,5,6,7,8;/M個(gè)數(shù)組元素全部初始化。int a23=1,0,0,0,1,1;/初始化所有數(shù)組元素,b 3=,0,0,0,0;/初始化所有數(shù)組元素,省略高維元素的數(shù)量。當(dāng)使用線性初始值表并且省略高維元素的數(shù)量時(shí),高維元素的數(shù)量是:例如,int b 3=1,0,0,0;高維元素的數(shù)量是2,數(shù)據(jù)類型是在C語言編程教程的第5章中構(gòu)造的,整數(shù)(線性初始值條目的數(shù)量/低維元素的數(shù)量)是向上取的。(3)二維數(shù)組的訪問維度數(shù)組元素的格式如下:說明:行下標(biāo)表達(dá)式和列下標(biāo)表達(dá)式的值也從0開始,aij代表數(shù)組的第i 1行和第j 1列的元素。因?yàn)閿?shù)組元素是變量,所以可以對它們執(zhí)行各種操作。如果數(shù)組元素定義數(shù)組amn,數(shù)組的第一維是n,第二維是aij的排列位置和內(nèi)存中的地址計(jì)算如下:a,a0:是數(shù)組a的起始地址,

溫馨提示

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

最新文檔

評論

0/150

提交評論