構(gòu)造數(shù)據(jù)類型_第1頁(yè)
構(gòu)造數(shù)據(jù)類型_第2頁(yè)
構(gòu)造數(shù)據(jù)類型_第3頁(yè)
構(gòu)造數(shù)據(jù)類型_第4頁(yè)
構(gòu)造數(shù)據(jù)類型_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、結(jié)構(gòu)類型: 結(jié)構(gòu)類型將不同數(shù)據(jù)類型組合成一個(gè)整體類型,是一種“用戶自定義構(gòu)造數(shù)據(jù)類型”。 定義結(jié)構(gòu)類型的格式如下: 其中:struct 是關(guān)鍵字,表示定義的是一個(gè)結(jié)構(gòu)類型;結(jié)構(gòu)類型名必須是一個(gè)合法的標(biāo)識(shí)符,結(jié)構(gòu)類型名省略時(shí)表示定義的是一個(gè)無(wú)名的結(jié)構(gòu)體;結(jié)構(gòu)類型的成員數(shù)量不限,各成員構(gòu)成成員表;數(shù)據(jù)類型可以是基本數(shù)據(jù)類型,也可以是構(gòu)造數(shù)據(jù)類型;結(jié)構(gòu)類型定義的結(jié)束符;不能省略。 struct 結(jié)構(gòu)類型名 數(shù)據(jù)類型1 1; 數(shù)據(jù)類型2 2; 數(shù)據(jù)類型 n n; ;C+語(yǔ)言程序設(shè)計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型5.5 結(jié)構(gòu)與聯(lián)合 15.5 結(jié)構(gòu)與聯(lián)合 例如,下面定義了一個(gè)學(xué)生信息的結(jié)構(gòu)類型: enum ge

2、nder man, ferman; struct student long no,birthday; /學(xué)號(hào),生日 char name22; /姓名 gender sex; /性別 float score; /成績(jī) ; 注:結(jié)構(gòu)體及結(jié)構(gòu)體變量的具體用法,有興趣的同學(xué)請(qǐng)參考教材示例程序【例5-14】C+語(yǔ)言程序設(shè)計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型注意:結(jié)構(gòu)類型是由多個(gè)成員類型組合而成,所以結(jié)構(gòu)類型變量所占內(nèi)存的大小理論上應(yīng)為各個(gè)成員所占內(nèi)存大小之和;為了提高對(duì)內(nèi)存的存取速度,C+分配各個(gè)結(jié)構(gòu)成員的內(nèi)存空間以字為單位,以保證其地址在字的整數(shù)倍處,所以結(jié)構(gòu)成員內(nèi)存空間存在間隙。 定義了一個(gè)結(jié)構(gòu)類型,但并沒(méi)有

3、定義變量,結(jié)構(gòu)類型中的成員名既不能當(dāng)作類型名也不能當(dāng)作變量使用。 score=95; /錯(cuò)誤,成員名不能當(dāng)作變量 stu.score;而不是 si.score;45.3.5 動(dòng)態(tài)內(nèi)存分配 在C+中,動(dòng)態(tài)內(nèi)存分配技術(shù)可以保證程序在運(yùn)行過(guò)程中根據(jù)實(shí)際需要申請(qǐng)適量的內(nèi)存,使用結(jié)束后還可以釋放。C+通過(guò)new運(yùn)算和delete運(yùn)算來(lái)實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存分配。 1. new運(yùn)算 new運(yùn)算的作用是按指定類型和大小動(dòng)態(tài)的分配內(nèi)存。 基本語(yǔ)法形式為: 其中:數(shù)據(jù)類型可以是基本數(shù)據(jù)類型,也可以是用戶自定義的復(fù)雜數(shù)據(jù)類型。 new運(yùn)算符在堆(內(nèi)存)中創(chuàng)建一個(gè)由類型

4、名指定類型的對(duì)象,如果創(chuàng)建成功,返回對(duì)象的地址;否則返回空指針NULL。初值列表給出被創(chuàng)建對(duì)象的初始值。由于返回的是地址,所以要用事先定義一個(gè)類型相同的指針變量來(lái)存儲(chǔ)這個(gè) 地址。 指針變量=new 類型名 (初值列表);C+語(yǔ)言程序設(shè)計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型55.3.5 動(dòng)態(tài)內(nèi)存分配1)new創(chuàng)建指定類型對(duì)象 例: int*ip; ip=newint(5); /ip指向1個(gè)初值為5的int型對(duì)象 也可以使用一條語(yǔ)句定義: int *ip=new int(5);C+語(yǔ)言程序設(shè)計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型說(shuō)明: 首先定義了一個(gè)整型指針ip; 然后申請(qǐng)內(nèi)存,創(chuàng)建一個(gè)int型數(shù)據(jù)對(duì)象,并將該數(shù)據(jù)對(duì)象初

5、始化為5; 最后返回創(chuàng)建的數(shù)據(jù)對(duì)象的地址,存入ip。65.3.5 動(dòng)態(tài)內(nèi)存分配2)new創(chuàng)建動(dòng)態(tài)數(shù)組時(shí) 使用new運(yùn)算可創(chuàng)建一個(gè)數(shù)據(jù)對(duì)象,也可以創(chuàng)建同類型的多個(gè)對(duì)象-數(shù)組。由于數(shù)組大小可以動(dòng)態(tài)給定,所創(chuàng)建的對(duì)象稱為動(dòng)態(tài)數(shù)組。new創(chuàng)建動(dòng)態(tài)數(shù)組時(shí),需要給出數(shù)組的結(jié)構(gòu)說(shuō)明。 其語(yǔ)法格式如下: 其中:下標(biāo)表達(dá)式與數(shù)組初始化時(shí)的常量表達(dá)式不同,可以是變量表達(dá)式。用new申請(qǐng)失敗時(shí),返回NULL。申請(qǐng)一個(gè)動(dòng)態(tài)數(shù)組,往往需要較大的空間,因此,在程序中需要對(duì)new的返回值進(jìn)行判斷,看是否申請(qǐng)成功。 例: int*pa; pa=newint5; /ip指向5個(gè)未初始化的int型數(shù)據(jù)對(duì)象的首地址 C+語(yǔ)言程序設(shè)

6、計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型指針變量=new 類型名 下標(biāo)表達(dá)式; 75.3.5 動(dòng)態(tài)內(nèi)存分配 3)new創(chuàng)建多維數(shù)組 使用new也可創(chuàng)建多維數(shù)組,其語(yǔ)法形式如下: 其中:當(dāng)用new創(chuàng)建多維數(shù)組時(shí),只有下標(biāo)表達(dá)式1可以任意結(jié)果是正整數(shù)的表達(dá)式,而其它下標(biāo)表達(dá)式必須是值為正整數(shù)的常量表達(dá)式。如果內(nèi)存申請(qǐng)成功,new運(yùn)算返回一個(gè)指向新分配內(nèi)存首地址的指針,它是一個(gè)T類型數(shù)組的指針,而不是T類型指針。數(shù)組元素的個(gè)數(shù)為除最左邊一維(最高維)外各維下標(biāo)表達(dá)式的乘積。 例: int *pb; pb = new int345; /錯(cuò)誤,new操作產(chǎn)生的是指向一個(gè)int45的二維int /型數(shù)組的指針 int (*pb)45; pb = new int345; /正確,針pb既可以作為指針使用,也可以像一個(gè) /三維數(shù)組名一樣使用 C+語(yǔ)言程序設(shè)計(jì)教程 第5章構(gòu)造數(shù)據(jù)類型指針變量=new 類型名T 下標(biāo)表達(dá)式1 下標(biāo)表達(dá)式2 85.3.4 多重指針2、delete運(yùn)算 當(dāng)程序不再需要由new分配的內(nèi)存空間時(shí),可以用delete釋放這些空間。 其語(yǔ)法格式為: 如果刪除的是動(dòng)態(tài)數(shù)組,則語(yǔ)法格式為: 其中:括號(hào)表示用delete釋放為多個(gè)對(duì)象分配的地址,中不需要說(shuō)明對(duì)象的個(gè)數(shù)。 不管建立的動(dòng)態(tài)數(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)論