指針與動(dòng)態(tài)內(nèi)存分配ppt課件_第1頁(yè)
指針與動(dòng)態(tài)內(nèi)存分配ppt課件_第2頁(yè)
指針與動(dòng)態(tài)內(nèi)存分配ppt課件_第3頁(yè)
指針與動(dòng)態(tài)內(nèi)存分配ppt課件_第4頁(yè)
指針與動(dòng)態(tài)內(nèi)存分配ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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、指針與動(dòng)態(tài)內(nèi)存分配1-2課程內(nèi)容安排課程內(nèi)容安排指針概述指針概述 指針的運(yùn)算指針的運(yùn)算 指針與數(shù)組指針與數(shù)組 指針與函數(shù)指針與函數(shù) 指針與字符串指針與字符串 二級(jí)指針二級(jí)指針 動(dòng)態(tài)內(nèi)存分配動(dòng)態(tài)內(nèi)存分配小結(jié)小結(jié) 習(xí)題習(xí)題 1-31 1 指針概述指針概述 1.1.內(nèi)存單元:在計(jì)算機(jī)中,一切的數(shù)據(jù)都是存放在存儲(chǔ)器中的。普內(nèi)存單元:在計(jì)算機(jī)中,一切的數(shù)據(jù)都是存放在存儲(chǔ)器中的。普通把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元,不同的數(shù)據(jù)類型所占通把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元,不同的數(shù)據(jù)類型所占用的內(nèi)存單元數(shù)不等,如整型量占用的內(nèi)存單元數(shù)不等,如整型量占2 2個(gè)單元,字符量占個(gè)單元,字符量占1 1個(gè)單元等

2、。個(gè)單元等。為了正確地訪問(wèn)內(nèi)存單元,必需為每個(gè)內(nèi)存單元編上號(hào)。根據(jù)一個(gè)為了正確地訪問(wèn)內(nèi)存單元,必需為每個(gè)內(nèi)存單元編上號(hào)。根據(jù)一個(gè)內(nèi)存單元的編號(hào)即可準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號(hào)也叫內(nèi)存單元的編號(hào)即可準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號(hào)也叫做地址。做地址。簡(jiǎn)單來(lái)說(shuō),指針是一個(gè)地址,其指向存儲(chǔ)某一個(gè)數(shù)據(jù)的存儲(chǔ)地址。簡(jiǎn)單來(lái)說(shuō),指針是一個(gè)地址,其指向存儲(chǔ)某一個(gè)數(shù)據(jù)的存儲(chǔ)地址。指針變量是一種特殊性質(zhì)的變量。指針變量是存放另一個(gè)變量的地指針變量是一種特殊性質(zhì)的變量。指針變量是存放另一個(gè)變量的地址的變量。它和普通變量一樣占用一定的存儲(chǔ)空間。它與普通變量址的變量。它和普通變量一樣占用一定的存儲(chǔ)空間。它與

3、普通變量不同之處:指針的存儲(chǔ)空間里存放的不是普通的數(shù)據(jù),而是一個(gè)地不同之處:指針的存儲(chǔ)空間里存放的不是普通的數(shù)據(jù),而是一個(gè)地址。址。對(duì)于指針我們可以這樣了解,比如一個(gè)人要到某地去,但不認(rèn)識(shí)路,對(duì)于指針我們可以這樣了解,比如一個(gè)人要到某地去,但不認(rèn)識(shí)路,于是去問(wèn)交警。然后交警把該地方的地址寫在了一張紙上,并且給于是去問(wèn)交警。然后交警把該地方的地址寫在了一張紙上,并且給了該問(wèn)路人。那么交警寫的地址就是指針,指向要去的地址,而那了該問(wèn)路人。那么交警寫的地址就是指針,指向要去的地址,而那張紙就是指針變量,用于存儲(chǔ)指針。張紙就是指針變量,用于存儲(chǔ)指針。 1-42 2 定義指針定義指針 指針是一個(gè)變量,在

4、程序中運(yùn)用時(shí),必需先聲明,后運(yùn)指針是一個(gè)變量,在程序中運(yùn)用時(shí),必需先聲明,后運(yùn)用。在指針聲明的同時(shí)也可以進(jìn)展初始化。指針的定義用。在指針聲明的同時(shí)也可以進(jìn)展初始化。指針的定義指出了指針的存儲(chǔ)類型和數(shù)據(jù)類型,定義的語(yǔ)法方式如指出了指針的存儲(chǔ)類型和數(shù)據(jù)類型,定義的語(yǔ)法方式如下:下:存儲(chǔ)類型名存儲(chǔ)類型名 數(shù)據(jù)類型數(shù)據(jù)類型 *指針變量名指針變量名例如:例如:int *px;char *name;static int *pa;定義了一個(gè)指針后,在運(yùn)用此指針前,必需首先給它賦定義了一個(gè)指針后,在運(yùn)用此指針前,必需首先給它賦一個(gè)合法的值。否那么,程序中對(duì)指針的運(yùn)用就有能夠一個(gè)合法的值。否那么,程序中對(duì)指針的

5、運(yùn)用就有能夠?qū)е孪到y(tǒng)解體??梢栽诙x指針的同時(shí)經(jīng)過(guò)初始化來(lái)給導(dǎo)致系統(tǒng)解體??梢栽诙x指針的同時(shí)經(jīng)過(guò)初始化來(lái)給指針賦值,也可以在運(yùn)用之前給指針賦值。指針初始化指針賦值,也可以在運(yùn)用之前給指針賦值。指針初始化的普通方式如下:的普通方式如下:存儲(chǔ)類型存儲(chǔ)類型 數(shù)據(jù)類型數(shù)據(jù)類型 *指針名指針名=初始地址值初始地址值;1-53 3 指針的運(yùn)算指針的運(yùn)算 兩個(gè)有關(guān)的運(yùn)算符:兩個(gè)有關(guān)的運(yùn)算符:1&:取地址運(yùn)算符:取地址運(yùn)算符2*:指針運(yùn)算符或稱:指針運(yùn)算符或稱“間接訪問(wèn)運(yùn)算符間接訪問(wèn)運(yùn)算符 例如,例如,&為變量的地址,為變量的地址,*為指針變量所指向的變?yōu)橹羔樧兞克赶虻淖兞苛?運(yùn)用運(yùn)用*p

6、與定義與定義*p不同,定義時(shí),不同,定義時(shí),int *p中的中的“*不是運(yùn)算符,不是運(yùn)算符,而在程序執(zhí)行語(yǔ)句中,援用而在程序執(zhí)行語(yǔ)句中,援用“*p,其中的,其中的“*是一個(gè)指針運(yùn)算是一個(gè)指針運(yùn)算符符指針運(yùn)算是以指針變量所持有的地址值為運(yùn)算量進(jìn)展的運(yùn)算。因指針運(yùn)算是以指針變量所持有的地址值為運(yùn)算量進(jìn)展的運(yùn)算。因此,指針運(yùn)算的本質(zhì)是地址的計(jì)算。由于指針是持有地址量的此,指針運(yùn)算的本質(zhì)是地址的計(jì)算。由于指針是持有地址量的變量這一特性,指針的運(yùn)算與普通變量的運(yùn)算在種類上和意義變量這一特性,指針的運(yùn)算與普通變量的運(yùn)算在種類上和意義上都是不同的。指針運(yùn)算的種類是有限的,它只能進(jìn)展取地址上都是不同的。指針運(yùn)

7、算的種類是有限的,它只能進(jìn)展取地址和取值運(yùn)算、算術(shù)運(yùn)算、關(guān)系運(yùn)算和賦值運(yùn)算。和取值運(yùn)算、算術(shù)運(yùn)算、關(guān)系運(yùn)算和賦值運(yùn)算。 假設(shè)闡明了一個(gè)指針,并使其值為某個(gè)變量的地址,那么可以經(jīng)假設(shè)闡明了一個(gè)指針,并使其值為某個(gè)變量的地址,那么可以經(jīng)過(guò)這個(gè)指針間接地訪問(wèn)在這個(gè)地址中存儲(chǔ)的值。過(guò)這個(gè)指針間接地訪問(wèn)在這個(gè)地址中存儲(chǔ)的值。1-64 4 常指針與指針常量常指針與指針常量修飾詞修飾詞 constconst是是C言語(yǔ)的一種關(guān)鍵字,起受維護(hù),防止以外的變言語(yǔ)的一種關(guān)鍵字,起受維護(hù),防止以外的變動(dòng)的作用!可以修飾變量,參數(shù),前往值動(dòng)的作用!可以修飾變量,參數(shù),前往值,甚至函數(shù)體。甚至函數(shù)體。const 修飾變量

8、,表示該變量不能被修正。修飾變量,表示該變量不能被修正。 1、const char *p 表示表示 指向的內(nèi)容不能改動(dòng),叫常量指向的內(nèi)容不能改動(dòng),叫常量指針。指針。 2、char * const p,就是將,就是將p聲明為指針常量,它的地聲明為指針常量,它的地址不能改動(dòng),是固定的,但是它的內(nèi)容可以改動(dòng)。址不能改動(dòng),是固定的,但是它的內(nèi)容可以改動(dòng)。 3、假設(shè)、假設(shè)const指針是前兩種的結(jié)合指針是前兩種的結(jié)合,使得指向的內(nèi)容和使得指向的內(nèi)容和地址都不能發(fā)生變化地址都不能發(fā)生變化. const double pi = 3.14159; const double *const pi_ptr = &a

9、mp;pi;教材教材54到到55頁(yè)頁(yè)1-75 5 多級(jí)指針多級(jí)指針當(dāng)指針變量當(dāng)指針變量pp所指的變量所指的變量ip又是一個(gè)指針時(shí),又是一個(gè)指針時(shí),pp是一是一種指向指針的指針,此時(shí)稱指針變量種指向指針的指針,此時(shí)稱指針變量pp是一種多級(jí)是一種多級(jí)指針。定義指向指針變量的指針變量的普通方式為:指針。定義指向指針變量的指針變量的普通方式為: 類型闡明符類型闡明符 * 變量名;變量名; 該普通方式闡明以下幾個(gè)方面的內(nèi)容:首先定義變量該普通方式闡明以下幾個(gè)方面的內(nèi)容:首先定義變量為指針變量,其次是該變量能指向一種指針對(duì)象,為指針變量,其次是該變量能指向一種指針對(duì)象,最后是被指向的指針對(duì)象能指向的對(duì)象的

10、類型。最后是被指向的指針對(duì)象能指向的對(duì)象的類型。 例例如如 int *pp, *ip, i; ip = &i; pp = &ip; 定義闡明定義闡明pp是指向指針的指針變量;它能指向的是是指向指針的指針變量;它能指向的是這樣一種指針對(duì)象,該指針對(duì)象是能指向這樣一種指針對(duì)象,該指針對(duì)象是能指向int型的指型的指針變量。如上述代碼讓針變量。如上述代碼讓pp指向指針變量指向指針變量ip,ip指向指向整型變量整型變量i。 1-86 6 指針的算術(shù)運(yùn)算指針的算術(shù)運(yùn)算 指針的算術(shù)運(yùn)算是按指針的算術(shù)運(yùn)算是按C言語(yǔ)地址計(jì)算規(guī)那么進(jìn)展的,這言語(yǔ)地址計(jì)算規(guī)那么進(jìn)展的,這種運(yùn)算與指針指向的數(shù)據(jù)類型有

11、親密關(guān)系,也就是種運(yùn)算與指針指向的數(shù)據(jù)類型有親密關(guān)系,也就是C言言語(yǔ)的地址計(jì)算與地址中存放的數(shù)據(jù)長(zhǎng)度有關(guān)。設(shè)語(yǔ)的地址計(jì)算與地址中存放的數(shù)據(jù)長(zhǎng)度有關(guān)。設(shè)px和和py是指向具有一樣數(shù)據(jù)類型的一組假設(shè)干數(shù)據(jù)的指針,是指向具有一樣數(shù)據(jù)類型的一組假設(shè)干數(shù)據(jù)的指針,n是整數(shù),那么指針可以進(jìn)展的算術(shù)運(yùn)算有如下幾種:是整數(shù),那么指針可以進(jìn)展的算術(shù)運(yùn)算有如下幾種:px+n,pxn,px+,+px, px,px,pxpy1-9指針與整數(shù)運(yùn)算指針與整數(shù)運(yùn)算 指針作為地址量加上或減去一個(gè)整數(shù)指針作為地址量加上或減去一個(gè)整數(shù)n,其意義是指,其意義是指針當(dāng)前指向位置的前方或后方第針當(dāng)前指向位置的前方或后方第n個(gè)數(shù)據(jù)的位置

12、。由于指?jìng)€(gè)數(shù)據(jù)的位置。由于指針可以指向不同數(shù)據(jù)類型,即數(shù)據(jù)長(zhǎng)度不同的數(shù)據(jù),所針可以指向不同數(shù)據(jù)類型,即數(shù)據(jù)長(zhǎng)度不同的數(shù)據(jù),所以這種運(yùn)算的結(jié)果值取決于指針指向的數(shù)據(jù)類型。例如,以這種運(yùn)算的結(jié)果值取決于指針指向的數(shù)據(jù)類型。例如,假設(shè)有一單字節(jié)字符類型和另一個(gè)雙字節(jié)整數(shù)類型:當(dāng)假設(shè)有一單字節(jié)字符類型和另一個(gè)雙字節(jié)整數(shù)類型:當(dāng)字符指針加字符指針加1時(shí),增量為時(shí),增量為1,而整數(shù)指針加,而整數(shù)指針加1時(shí),增量為時(shí),增量為2。指針相減:指針相減: 設(shè)指針設(shè)指針p和和q是指向同一組數(shù)據(jù)類型一致的數(shù)據(jù),那么是指向同一組數(shù)據(jù)類型一致的數(shù)據(jù),那么pq運(yùn)算的結(jié)果值是兩指針指向的地址位置之間的數(shù)據(jù)運(yùn)算的結(jié)果值是兩指針

13、指向的地址位置之間的數(shù)據(jù)個(gè)數(shù)。個(gè)數(shù)。1-10兩個(gè)指向同一組類型一樣的數(shù)據(jù)的指針之間可以進(jìn)展各種關(guān)系運(yùn)算,運(yùn)算結(jié)果為邏輯值,滿足關(guān)系時(shí),結(jié)果為真,否那么為假。如int a10,*p,*q; p=&a0; q=&a3; 那么p&a2 結(jié)果為0指向不同數(shù)據(jù)類型的指針之間的關(guān)系運(yùn)算是沒(méi)有意義的。指針與普通整數(shù)變量之間的關(guān)系運(yùn)算也是無(wú)意義的。但是指針可以和零之間進(jìn)展等于或不等于的關(guān)系運(yùn)算,即:p= =0或p!=0,它們用于判別指針p能否為一個(gè)空指針。1-117 7 指針與數(shù)組指針與數(shù)組 指針在數(shù)組中運(yùn)用較為頻繁,現(xiàn)實(shí)上,數(shù)組名就是一個(gè)地址,表示的是該數(shù)組的首地址 。要訪問(wèn)或運(yùn)用一

14、個(gè)數(shù)組元素,可以用三種不同的方法:下標(biāo)法、地址法,還有一種是指針?lè)ā?可以設(shè)置指針變量指向數(shù)組或數(shù)組中的元素。 如:int a10, *p; 可以使整型指針p指向數(shù)組中任何一個(gè)元素, 假定給出賦值運(yùn)算 p=&a0; 此時(shí), p指向數(shù)組中的第0號(hào)元素, 即a0, 指針變量p中包含了數(shù)組元素a0 的地址, 由于數(shù)組元素在內(nèi)存中是延續(xù)存放的, 因此, 我們就可以經(jīng)過(guò)指針變量p及其有關(guān)運(yùn)算間接訪問(wèn)數(shù)組中的任何一個(gè)元素。根據(jù)地址運(yùn)算規(guī)那么, a+1為a1的地址, a+i就為ai的地址。 1-12 在定義指向數(shù)組的指針時(shí),有以下幾種表示方式:在定義指向數(shù)組的指針時(shí),有以下幾種表示方式: 1 int

15、 a10, *p = &a0; 2 int a10, *p = a; 3 int a10, *p; p = a ; 4int a10, *p; p = &a0; 5int a10; int *p = &a0;用指針表示數(shù)組元素的地址和內(nèi)容的幾種方式:用指針表示數(shù)組元素的地址和內(nèi)容的幾種方式: (1). p+i和和a+i均表示均表示ai的地址的地址, 或者講或者講, 它們均指向數(shù)組第它們均指向數(shù)組第i號(hào)元素號(hào)元素, 即指向即指向ai。 (2). *(p+i)和和*(a+i)都表示都表示p+i和和a+i所指對(duì)象的內(nèi)容所指對(duì)象的內(nèi)容, 即為即為ai。 (3). 指向數(shù)組元素的

16、指針指向數(shù)組元素的指針, 也可以表示成數(shù)組的方式也可以表示成數(shù)組的方式, 也也 就是說(shuō)就是說(shuō), 它允許指針?biāo)试S指針變量帶下標(biāo)變量帶下標(biāo), 如如pi與與*(p+i)等等 價(jià)。價(jià)。練習(xí)教材練習(xí)教材57頁(yè)頁(yè)5-5例題例題 。 1-138 8 指針數(shù)組指針數(shù)組數(shù)組中每個(gè)元素都是指針變量,該數(shù)組就稱為指針數(shù)組。數(shù)組中每個(gè)元素都是指針變量,該數(shù)組就稱為指針數(shù)組。 指針數(shù)組的定義方式為:指針數(shù)組的定義方式為: 類型標(biāo)識(shí)類型標(biāo)識(shí) *數(shù)組名數(shù)組名整型常量表達(dá)式整型常量表達(dá)式; 例如例如: int *a10; 定義了一個(gè)指針數(shù)組定義了一個(gè)指針數(shù)組, 數(shù)組中的數(shù)組中的每個(gè)元素都是指向整型量的指針每個(gè)元素都是指向整

17、型量的指針, 該數(shù)組由該數(shù)組由10個(gè)元素組成個(gè)元素組成, 即即a0, a1, a2, ., a9, 它們均為指針變量。它們均為指針變量。a為該指為該指針數(shù)組名針數(shù)組名, 和數(shù)組一樣和數(shù)組一樣, a是常量是常量, 不能對(duì)它進(jìn)展增量運(yùn)算。不能對(duì)它進(jìn)展增量運(yùn)算。a為指針數(shù)組元素為指針數(shù)組元素a0的的 地址地址, a+i為為ai的地址的地址, *a就是就是a0, *(a+i)就是就是ai。1-149 9 指向數(shù)組的指針指向數(shù)組的指針int *a10; 定義了一個(gè)指針數(shù)組,本質(zhì)是一個(gè)數(shù)組,每個(gè)元定義了一個(gè)指針數(shù)組,本質(zhì)是一個(gè)數(shù)組,每個(gè)元素都是指針。素都是指針。int (*p)10; a為指向含為指向含1

18、0個(gè)元素的一維整型數(shù)組的指針變個(gè)元素的一維整型數(shù)組的指針變量。指向數(shù)組的指針是一個(gè)二級(jí)指針。量。指向數(shù)組的指針是一個(gè)二級(jí)指針。1-1510 10 指向二維數(shù)組指針的運(yùn)用指向二維數(shù)組指針的運(yùn)用int main() int twoArray34 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11; int (*p)4 = twoArray; / 定義一個(gè)指向一維數(shù)組的指針定義一個(gè)指向一維數(shù)組的指針 for(p = twoArray; p != twoArray + 3; +p) / 第一層循環(huán),每個(gè)循環(huán)遍歷一行元素第一層循環(huán),每個(gè)循環(huán)遍歷一行元素 for(int *q =

19、 *p; q != *p + 4; +q) / 第二層循環(huán),每次循環(huán)輸出一個(gè)元素第二層循環(huán),每次循環(huán)輸出一個(gè)元素 cout *q ; cout endl; return 0; 1-16上圖表示了二維數(shù)組的存儲(chǔ)方法,上圖表示了二維數(shù)組的存儲(chǔ)方法,twoArray0twoArray2表示各一維數(shù)組的首地址,二表示各一維數(shù)組的首地址,二維數(shù)組名維數(shù)組名twoArray表示整個(gè)二維數(shù)組的首地址,它和表示整個(gè)二維數(shù)組的首地址,它和twoArray0以及以及twoArray00是同一個(gè)地址。但是他是同一個(gè)地址。但是他們表示的級(jí)別是不同的,因此不能混用。們表示的級(jí)別是不同的,因此不能混用。twoArray1

20、是元素級(jí)別的,是是元素級(jí)別的,是int*,而,而&twoArray1是是行級(jí)別的,是行級(jí)別的,是int(*p)4。也就是說(shuō),假設(shè)對(duì)。也就是說(shuō),假設(shè)對(duì)twoArray1加加1,那么指針挪動(dòng)到下一個(gè)元素的位置,而假設(shè)對(duì),那么指針挪動(dòng)到下一個(gè)元素的位置,而假設(shè)對(duì)&twoArray1加加1,指針挪動(dòng)到下一行的位置:,指針挪動(dòng)到下一行的位置:1-1711 11 指針與字符串指針與字符串字符串常量是由雙引號(hào)括起來(lái)的字符序列字符串常量是由雙引號(hào)括起來(lái)的字符序列 ,C+言語(yǔ)中操作一言語(yǔ)中操作一個(gè)字符串常量的方法有個(gè)字符串常量的方法有: (1). 把字符串常量存放在一個(gè)字符數(shù)組之中把字符串常量存

21、放在一個(gè)字符數(shù)組之中, 例如例如: char s=a string; 數(shù)組數(shù)組s共有共有9個(gè)元素所組成個(gè)元素所組成, 其中其中s8中的內(nèi)容是中的內(nèi)容是0。實(shí)踐上。實(shí)踐上, 在字符數(shù)組定義的過(guò)程中在字符數(shù)組定義的過(guò)程中, 編譯程序直編譯程序直接把字符串復(fù)寫到數(shù)組中接把字符串復(fù)寫到數(shù)組中, 即對(duì)數(shù)組即對(duì)數(shù)組s初始化。初始化。 (2). 用字符指針指向字符串用字符指針指向字符串, 然后經(jīng)過(guò)字符指針來(lái)訪問(wèn)字符然后經(jīng)過(guò)字符指針來(lái)訪問(wèn)字符串存貯區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時(shí)串存貯區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時(shí), 根據(jù)數(shù)組的類根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)那么型轉(zhuǎn)換規(guī)那么, 它被轉(zhuǎn)換成字符指針。因此它被轉(zhuǎn)換成

22、字符指針。因此, 假設(shè)我們定義了一假設(shè)我們定義了一字符指針字符指針cp: char *cp; 于是可用于是可用: cp=“a string; 使使cp指向字符串常量中的第指向字符串常量中的第0號(hào)字符號(hào)字符a,以后我們可經(jīng)過(guò)以后我們可經(jīng)過(guò)cp來(lái)訪問(wèn)這來(lái)訪問(wèn)這一存貯區(qū)域一存貯區(qū)域, 如如*cp或或cp0就是字符就是字符a, 而而cpi或或*(cp+i)就相當(dāng)就相當(dāng)于字符串的第于字符串的第i號(hào)字符號(hào)字符 。1-1812 12 動(dòng)態(tài)內(nèi)存分配動(dòng)態(tài)內(nèi)存分配在在C言語(yǔ)中運(yùn)用言語(yǔ)中運(yùn)用“malloc()函數(shù)來(lái)懇求內(nèi)存,運(yùn)用函數(shù)來(lái)懇求內(nèi)存,運(yùn)用“free()函數(shù)來(lái)釋放內(nèi)存。在函數(shù)來(lái)釋放內(nèi)存。在C+言語(yǔ)中依然可以

23、言語(yǔ)中依然可以運(yùn)用這種方法,但是不建議運(yùn)用該方法。運(yùn)用這種方法,但是不建議運(yùn)用該方法。C+言語(yǔ)言語(yǔ)提供了提供了new表達(dá)式和表達(dá)式和delete表達(dá)式來(lái)懇求和釋放內(nèi)存。表達(dá)式來(lái)懇求和釋放內(nèi)存。用用new表達(dá)式創(chuàng)建動(dòng)態(tài)的類對(duì)象,它的壽命期由創(chuàng)建開(kāi)表達(dá)式創(chuàng)建動(dòng)態(tài)的類對(duì)象,它的壽命期由創(chuàng)建開(kāi)場(chǎng),釋放時(shí)終了,定義格式為,場(chǎng),釋放時(shí)終了,定義格式為,“new ();,其中初始值是可選項(xiàng),假設(shè)給出了初始,其中初始值是可選項(xiàng),假設(shè)給出了初始值,系統(tǒng)會(huì)自動(dòng)調(diào)用相應(yīng)的構(gòu)造函數(shù)初始化新創(chuàng)建值,系統(tǒng)會(huì)自動(dòng)調(diào)用相應(yīng)的構(gòu)造函數(shù)初始化新創(chuàng)建的類對(duì)象,否那么調(diào)用缺省構(gòu)造函數(shù)進(jìn)展初始化。的類對(duì)象,否那么調(diào)用缺省構(gòu)造函數(shù)進(jìn)展初

24、始化。1-19例如,例如,int *p;/整數(shù)類型指針整數(shù)類型指針 float *f;/浮點(diǎn)類型指針浮點(diǎn)類型指針p = new int;/為一個(gè)整數(shù)類型的數(shù)分配內(nèi)存為一個(gè)整數(shù)類型的數(shù)分配內(nèi)存f = new float; /為一個(gè)浮點(diǎn)類型的數(shù)分配內(nèi)存為一個(gè)浮點(diǎn)類型的數(shù)分配內(nèi)存假設(shè)勝利調(diào)用了假設(shè)勝利調(diào)用了new,那么前往一個(gè)指向已分配空間的,那么前往一個(gè)指向已分配空間的指針,假設(shè)此空間不可用或檢測(cè)到某些錯(cuò)誤,那么指針,假設(shè)此空間不可用或檢測(cè)到某些錯(cuò)誤,那么前往零。為對(duì)象分配內(nèi)存運(yùn)用同樣的語(yǔ)法,例如,前往零。為對(duì)象分配內(nèi)存運(yùn)用同樣的語(yǔ)法,例如,person *stu_ptr; /指向類型為指向類型為person 對(duì)象的指針對(duì)象的指針 stu_ptr = new person(); /指向新的指向新的 person 對(duì)象對(duì)象 假設(shè)不再需求所分配的存儲(chǔ)空間,要用假設(shè)不再需求所分配的存儲(chǔ)空間,要用delete釋放,例釋放,例如:如: delete p; delete f;1-20動(dòng)態(tài)改動(dòng)數(shù)組的大?。簞?dòng)態(tài)改動(dòng)數(shù)組的大?。?int *a=new int40; for(int i=0;i40;i+) ai=i

溫馨提示

  • 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)論