第六章數(shù)組、指針域字符串CUMT120115_第1頁(yè)
第六章數(shù)組、指針域字符串CUMT120115_第2頁(yè)
第六章數(shù)組、指針域字符串CUMT120115_第3頁(yè)
第六章數(shù)組、指針域字符串CUMT120115_第4頁(yè)
第六章數(shù)組、指針域字符串CUMT120115_第5頁(yè)
已閱讀5頁(yè),還剩83頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1C+ 語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)張張 磊磊 博士博士 副教授副教授2第六章 數(shù)組、指針與字符串3主要內(nèi)容主要內(nèi)容6.1數(shù)組數(shù)組6.2 指針指針6.3 動(dòng)態(tài)存儲(chǔ)分配動(dòng)態(tài)存儲(chǔ)分配6.4字符串字符串6.5對(duì)象數(shù)組對(duì)象數(shù)組6.6對(duì)象指針對(duì)象指針6.7用用 vector 創(chuàng)建數(shù)組對(duì)象創(chuàng)建數(shù)組對(duì)象6.8字符串:字符串:string 類類46.1數(shù)組數(shù)組數(shù)組:具有一定順序關(guān)系的若干相同類型變量的集合體。數(shù)組:具有一定順序關(guān)系的若干相同類型變量的集合體。q 一維數(shù)組的聲明一維數(shù)組的聲明類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名變量名nl 聲明一個(gè)長(zhǎng)度為聲明一個(gè)長(zhǎng)度為 n 的數(shù)組(向量)的數(shù)組(向量)l 類型標(biāo)識(shí)符:數(shù)組元素

2、的數(shù)據(jù)類型;類型標(biāo)識(shí)符:數(shù)組元素的數(shù)據(jù)類型;l n:數(shù)組的長(zhǎng)度,即元素的個(gè)數(shù);:數(shù)組的長(zhǎng)度,即元素的個(gè)數(shù);int x5 / 聲明一個(gè)長(zhǎng)度為聲明一個(gè)長(zhǎng)度為 5 的一維數(shù)組的一維數(shù)組q 一維數(shù)組的引用一維數(shù)組的引用變量名變量名k / 注:注:k 的取值為的取值為 0 到到 n-1 例:例:5一維數(shù)組舉例一維數(shù)組舉例#includeusing namespace std; int main() int i, x5; for (i=0; i5; i+) xi = 2*i; for (i=0; i5; i+) cout x i = xi endl; ex_array_01.cpp注意:數(shù)組的下標(biāo)不能越界

3、,否則會(huì)出現(xiàn)嚴(yán)重的錯(cuò)誤!注意:數(shù)組的下標(biāo)不能越界,否則會(huì)出現(xiàn)嚴(yán)重的錯(cuò)誤! 6聲明數(shù)組時(shí),若長(zhǎng)度為一個(gè)表達(dá)式,且含有變量,則不能初聲明數(shù)組時(shí),若長(zhǎng)度為一個(gè)表達(dá)式,且含有變量,則不能初始化!始化!例:例:int n = 5;int xn = 0,2,4,6,8; / ERROR!const int n = 5; / n是常量!是常量!int xn = 0,2,4,6,8; / OK!7q 幾點(diǎn)注意:幾點(diǎn)注意:類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名變量名nl n 必須是一個(gè)確定的正整數(shù);必須是一個(gè)確定的正整數(shù);l n 可以用表達(dá)式代替,但表達(dá)式的值必須是正整數(shù)可以用表達(dá)式代替,但表達(dá)式的值必須是正整數(shù)int

4、n=5;int xn;例:例:int m=2, n=3;int xm*n+2;l 只能逐個(gè)引用數(shù)組元素,而不能一次引用整個(gè)數(shù)組只能逐個(gè)引用數(shù)組元素,而不能一次引用整個(gè)數(shù)組l 數(shù)組元素在內(nèi)存中順序存放,它們的地址是連續(xù)的數(shù)組元素在內(nèi)存中順序存放,它們的地址是連續(xù)的l 數(shù)組名代表數(shù)組存放在內(nèi)存中的首地址數(shù)組名代表數(shù)組存放在內(nèi)存中的首地址例:例:x10 在內(nèi)存中的存放順序是在內(nèi)存中的存放順序是x0 x1 x2 x3 x4 x5 x6 x7 x8 x98q 一維數(shù)組的初始化一維數(shù)組的初始化 :在聲明時(shí)可以同時(shí)賦初值在聲明時(shí)可以同時(shí)賦初值例:例:int x5=0,2,4,6,8;l 也可以只給部分元素賦

5、初值也可以只給部分元素賦初值例:例:int x5=0,2,4; / 只能依次賦初值只能依次賦初值l 全部元素賦初值時(shí)可以不指定數(shù)組長(zhǎng)度全部元素賦初值時(shí)可以不指定數(shù)組長(zhǎng)度例:例: int x=0,2,4,6,8; 注意:只能對(duì)數(shù)組元素賦值,不能對(duì)數(shù)組名賦值!注意:只能對(duì)數(shù)組元素賦值,不能對(duì)數(shù)組名賦值! 例:例:int x5; x=6; / ERROR!9/ 數(shù)組 #include #include using namespace std;int main() int n; cout n; int i, xn; for (i=0; in; i+) xi = 2*i; for (i=0; in; i

6、+) cout x i = xi endl; system(pause); return 0;10二維數(shù)組二維數(shù)組q 二維數(shù)組的聲明二維數(shù)組的聲明 :l 聲明一個(gè)聲明一個(gè) m X n 的二維數(shù)組(矩陣)的二維數(shù)組(矩陣)例:例:int x23;x00 = 1; x01 = 3; x02 = 5;for (j=0; j3; j+) x1j = 2*x0j; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名變量名mnq 二維數(shù)組的引用:二維數(shù)組的引用:變量名變量名ij / 注意下標(biāo)的取值范圍,不要越界!注意下標(biāo)的取值范圍,不要越界! 11二維數(shù)組二維數(shù)組q 二維數(shù)組的存儲(chǔ)二維數(shù)組的存儲(chǔ) :按行存儲(chǔ)按行存儲(chǔ)例:例:x2

7、3 在內(nèi)存中的存放順序是在內(nèi)存中的存放順序是x00 x01 x02 x10 x11 x12x0 x1x在在 C+ 中,二維數(shù)組被看成是中,二維數(shù)組被看成是一維數(shù)組一維數(shù)組的的數(shù)組數(shù)組12二維數(shù)組二維數(shù)組q 二維數(shù)組的初始化二維數(shù)組的初始化l 分組初始化分組初始化例:例:int x23=1,3,5, 2,6,10;l 部分初始化部分初始化l 全部初始化全部初始化例:例:int x23=1,3,5,2,6,10; 例:例:int x23=1, 2,6;int x3=1,3,5,2,6,10; / 注:注:只能省第一維只能省第一維的下標(biāo)!的下標(biāo)! 13二維數(shù)組舉例二維數(shù)組舉例例:例:計(jì)算計(jì)算 n 階

8、階 Hilbert 矩陣與全是矩陣與全是 1 的的 向量的乘積向量的乘積ex_array_03.cpp, nijHh11ijhij 11nnijjijyHxh x14/ Hilber 矩陣與向量的乘積 #include #include #include using namespace std;const int n = 500; / 矩陣維數(shù) int main() clock_t t0, t1; int i, j; double Hnn, xn, yn; t0 = clock(); for (i=0; in; i+) for(j=0; jn; j+) Hij = 1.0 / (i+j+1);

9、 / Hilbert 矩陣 xi = 1.0; / x 15yi = 0.0; / 賦初值 for(i=0; in; i+) for(j=0; jn; j+) yi = yi+Hij*xj; t1 = clock(); cout y0= y0 , yn-1= yn-1 endl; cout Time: double(t1-t0)/CLOCKS_PER_SEC endl; cout nx0= x0 , xn-1= xn-1 endl; cout H0= H00 , Hn-1= H0n-1 endl; cout endl; system(pause); return 0;16多維數(shù)組多維數(shù)組q 多

10、維數(shù)組的聲明多維數(shù)組的聲明 :類型標(biāo)識(shí)符類型標(biāo)識(shí)符 變量名變量名n1n2n3.多維數(shù)組的賦值、引用、初始化與二維數(shù)組類似多維數(shù)組的賦值、引用、初始化與二維數(shù)組類似17數(shù)組作為函數(shù)的參數(shù)數(shù)組作為函數(shù)的參數(shù)l 數(shù)組中的單個(gè)元素?cái)?shù)組中的單個(gè)元素作實(shí)參,與單個(gè)變量一樣(值傳遞)作實(shí)參,與單個(gè)變量一樣(值傳遞)例:例:void my_swap(int a, int b) int t; t = a; a = b; b = t;int main() int x2=1,3; my_swap(x0, x1); cout x0=x0, x1=x1endl;18數(shù)組作為函數(shù)的參數(shù)數(shù)組作為函數(shù)的參數(shù)例:例:void

11、my_swap(int a, int b, int n) int t, i; for (i=0; in; i+) t=ai; ai=bi; bi = t; int main() const int n=3; int i, xn=1,2,3, yn=2,4,6; my_swap(x,y,n); l 若使用若使用數(shù)組名數(shù)組名作參數(shù),則形參和實(shí)參都應(yīng)該是數(shù)組名,類作參數(shù),則形參和實(shí)參都應(yīng)該是數(shù)組名,類型要一樣,傳送的是型要一樣,傳送的是數(shù)組首地址數(shù)組首地址。此時(shí),在函數(shù)中。此時(shí),在函數(shù)中對(duì)形參數(shù)對(duì)形參數(shù)組元素的改變會(huì)直接影響到實(shí)參數(shù)組組元素的改變會(huì)直接影響到實(shí)參數(shù)組,即實(shí)參數(shù)組的對(duì)應(yīng)元,即實(shí)參數(shù)組的

12、對(duì)應(yīng)元素也會(huì)發(fā)生改變!素也會(huì)發(fā)生改變!用數(shù)組作形參,一定要加中用數(shù)組作形參,一定要加中括號(hào)!括號(hào)!但一般不指定第一維的大小但一般不指定第一維的大小19數(shù)組舉例數(shù)組舉例例:例:計(jì)算矩陣各列的和計(jì)算矩陣各列的和#include using namespace std;const int m = 3, n = 4; / / 矩陣維數(shù)矩陣維數(shù)void sum_col(double An, double s) int i, j; for(j=0; jn; j+) si=0.0; / / 賦初值賦初值 for(j=0; jn; j+) for(i=0; im; i+) sj = sj + Aij; int

13、 main() double Hmn, sn; for(int i=0; im; i+) for(int j=0; jn; j+) Hij=1.0/(i+j+1); sum_col(H, s); cout s0=s0, sn-1=sn-1 指針指針q 指針:指針:存放內(nèi)存單元地址的數(shù)據(jù)類型存放內(nèi)存單元地址的數(shù)據(jù)類型類型標(biāo)識(shí)符類型標(biāo)識(shí)符 *指針變量名指針變量名 l 聲明一個(gè)指針類型的變量聲明一個(gè)指針類型的變量l 類型標(biāo)識(shí)符類型標(biāo)識(shí)符表示該指針表示該指針?biāo)赶虻膶?duì)象所指向的對(duì)象的數(shù)據(jù)類型,即該的數(shù)據(jù)類型,即該指針?biāo)淼膬?nèi)存單元所能存放的數(shù)據(jù)的類型指針?biāo)淼膬?nèi)存單元所能存放的數(shù)據(jù)的類型Tips:

14、變量為什么要聲明?變量為什么要聲明?1) 分配內(nèi)存空間分配內(nèi)存空間; 2) 限定變量能參與的運(yùn)算及運(yùn)算規(guī)則。限定變量能參與的運(yùn)算及運(yùn)算規(guī)則。 22指針運(yùn)算指針運(yùn)算q 取地址運(yùn)算符:取地址運(yùn)算符:&變量名變量名 / 提取變量在內(nèi)存中的存放地址提取變量在內(nèi)存中的存放地址l 此時(shí),我們通常稱這里的此時(shí),我們通常稱這里的 px 是指向是指向 x 的指針的指針l 注意,聲明指針時(shí),類型必須與其指向的對(duì)象的類型一致注意,聲明指針時(shí),類型必須與其指向的對(duì)象的類型一致例:例:int x = 3; int *px;px = &x; / 將將 x 的地址賦給指針的地址賦給指針 xpq 指針運(yùn)算符:指針運(yùn)算符:*指

15、針變量名指針變量名 / 提取指針變量所指向的對(duì)象的值提取指針變量所指向的對(duì)象的值例:例:int x; int *px; px = &x; *px=3; / 等價(jià)于等價(jià)于 x = 3ex_pointer_01.cpp*在使用指針時(shí),我們通常關(guān)心的是指針指向的元素!在使用指針時(shí),我們通常關(guān)心的是指針指向的元素!23/ 指針 #include #include using namespace std;int main() int x; int *xp = &x; x = 5; cout x= x endl; cout x= *xp endl; cout endl; system(pause); re

16、turn 0;24初始化初始化q 聲明指針變量時(shí),可以賦初值聲明指針變量時(shí),可以賦初值例:例:int x = 3; int *px = &x;q void 類型的指針類型的指針void *指針名指針名 l void 類型的指針可以指向任何類型的對(duì)象的地址類型的指針可以指向任何類型的對(duì)象的地址l 不允許使用不允許使用 void 指針操縱它所指向的對(duì)象!指針操縱它所指向的對(duì)象!l 通過通過顯式類型轉(zhuǎn)換顯式類型轉(zhuǎn)換,可以訪問,可以訪問 void 類型指針?biāo)赶虻膶?duì)象。類型指針?biāo)赶虻膶?duì)象。int x = 3; int *px; void *pv; pv = &x; / OK, void 型指針指向整

17、型變量型指針指向整型變量Px = (int *)pv; / OK,使用,使用 void 型指針時(shí)需要強(qiáng)型指針時(shí)需要強(qiáng)制類型轉(zhuǎn)換制類型轉(zhuǎn)換25指針賦值指針賦值q 指針可能的取值指針可能的取值l 一個(gè)有效的指針只有三種取值:一個(gè)有效的指針只有三種取值:(1) 一個(gè)對(duì)象的地址;一個(gè)對(duì)象的地址;(2) 指向某個(gè)對(duì)象后面的對(duì)象;指向某個(gè)對(duì)象后面的對(duì)象;(3) 值為值為 0 或或 NULL(空指針)。(空指針)。沒有沒有初始化初始化或或賦值賦值的指針是的指針是無(wú)效的指針無(wú)效的指針,引用無(wú)效指針會(huì)帶來(lái)難以預(yù)料的問題!引用無(wú)效指針會(huì)帶來(lái)難以預(yù)料的問題!l 指針賦值:只能使用以下四種類型的值指針賦值:只能使用以

18、下四種類型的值(1) 0 或者值為或者值為 0 的常量;的常量;(2) 類型匹配的對(duì)象的地址;類型匹配的對(duì)象的地址;(3) 同類型的另一有效指針;同類型的另一有效指針;(4) 另一個(gè)對(duì)象末的下一個(gè)地址。另一個(gè)對(duì)象末的下一個(gè)地址。int x = 3; int *px = &x;int *pi;pi = 0; / OKpi = NULL; / OK26指針與常量指針與常量q 指向常量的指針指向常量的指針const int a = 3; int *pa = &a; / ERRORconst int *cpa = &a; / OKl 指向指向 const 對(duì)象(常量)的指針必須用對(duì)象(常量)的指針必須

19、用 const 聲明!聲明!l 這里的這里的 const 限定了指針?biāo)笇?duì)象的屬性,不是指針本身的屬性!限定了指針?biāo)笇?duì)象的屬性,不是指針本身的屬性!const int a = 3; int b = 5; const int *cpa = &a; / OK*cpa = 5; / ERRORcpa = &b; / OK*cpa = 9; / ERRORb = 9; / OKl 允許把非允許把非 const 對(duì)象的地址賦給對(duì)象的地址賦給指向指向 const 的指針的指針;l 但不允許使用但不允許使用指向指向 const 的指針的指針來(lái)修改它所指向的對(duì)象的值!來(lái)修改它所指向的對(duì)象的值!指向指向 co

20、nst 的指針?biāo)笇?duì)象的指針?biāo)笇?duì)象的值并的值并不一定不能修改不一定不能修改!ex_pointer_02.cppconst 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 *指針名指針名 27/ 指針 #include #include using namespace std;int main() const int a=3; / int *pa = &a; / ERROR const int *cpa = &a; cout a= *cpa endl; / *cpa = 5; / ERROR int b = 5; cpa = &b; / OK / *cpa = 9; / ERROR / b = 9; / OK cout

21、 b= *cpa pa 所指的當(dāng)前位置之后第所指的當(dāng)前位置之后第 k 個(gè)元素的地個(gè)元素的地址址pa - k - pa 所指的當(dāng)前位置之前第所指的當(dāng)前位置之前第 k 個(gè)元素的地個(gè)元素的地址址指針可以和整數(shù)或整型變量進(jìn)行加減運(yùn)算,指針可以和整數(shù)或整型變量進(jìn)行加減運(yùn)算,且運(yùn)算規(guī)則與指針的類型相關(guān)!且運(yùn)算規(guī)則與指針的類型相關(guān)!l 在指針上加上或減去一個(gè)整型數(shù)值在指針上加上或減去一個(gè)整型數(shù)值 k,等效于獲得一個(gè),等效于獲得一個(gè)新指針,該指針指向原來(lái)的元素之后或之前的第新指針,該指針指向原來(lái)的元素之后或之前的第 k 個(gè)元素個(gè)元素l 指針的算術(shù)運(yùn)算通常是與指針的算術(shù)運(yùn)算通常是與數(shù)組數(shù)組的使用相聯(lián)系的的使用相

22、聯(lián)系的l 一個(gè)指針可以加上或減去一個(gè)指針可以加上或減去 0,其值不變,其值不變int * pa; int k;pa+ - pa 所指的當(dāng)前位置之后的元素的地址所指的當(dāng)前位置之后的元素的地址pa- - pa 所指的當(dāng)前位置之前的元素的地址所指的當(dāng)前位置之前的元素的地址30指針?biāo)阈g(shù)運(yùn)算指針?biāo)阈g(shù)運(yùn)算papa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)short *pa / 每個(gè)元素占兩個(gè)字節(jié)每個(gè)元素占兩個(gè)字節(jié)31指針?biāo)阈g(shù)運(yùn)算指針?biāo)阈g(shù)運(yùn)算pbpb-1pb+1pb+2*pb*(pb+1)*(pb+2)*(pb-1)int *pb /每個(gè)

23、元素占四個(gè)字節(jié)每個(gè)元素占四個(gè)字節(jié)32指針與數(shù)組指針與數(shù)組int a=0,2,4,8;int *pa; pa=a; / OKpa=&a0; / OK, 與上式等價(jià)與上式等價(jià)*pa=3;/ OK,等價(jià)于,等價(jià)于 a0=3*(pa+2)=5; / OK,等價(jià)于,等價(jià)于 a2=5*(a+2)=5; / OK,等價(jià)于,等價(jià)于 a2=5C+中,指針與數(shù)組密切相關(guān):由于數(shù)組元素在內(nèi)存中是連續(xù)中,指針與數(shù)組密切相關(guān):由于數(shù)組元素在內(nèi)存中是連續(xù)存放的,因此使用指針可以非常方便地處理數(shù)組元素!存放的,因此使用指針可以非常方便地處理數(shù)組元素!思考:思考:pa = a+1,則,則 *pa = ?l 在在 C+ 中,數(shù)

24、組名就是數(shù)組的首地址!中,數(shù)組名就是數(shù)組的首地址!l 當(dāng)數(shù)組名出現(xiàn)在表達(dá)式中時(shí),會(huì)自動(dòng)轉(zhuǎn)化成指向第一個(gè)數(shù)組當(dāng)數(shù)組名出現(xiàn)在表達(dá)式中時(shí),會(huì)自動(dòng)轉(zhuǎn)化成指向第一個(gè)數(shù)組元素的指針!元素的指針!33指針與一維數(shù)組指針與一維數(shù)組int a=0,2,4,8;int * pa = a; *pa = 1; / 等價(jià)于等價(jià)于 a0=1*(pa+2) = 5; / 等價(jià)于等價(jià)于 a2=5*(a+2) = 5; / OK,等價(jià)于,等價(jià)于 a2=5*(pa+) = 3; / OK,等價(jià)于,等價(jià)于 a0=3; pa = pa+1;*(a+) = 3; / ERROR! a代表數(shù)組首地址,是常量指針!代表數(shù)組首地址,是常量指

25、針!*(pa+1) = 10; / 思考:修改了哪個(gè)元素的值?思考:修改了哪個(gè)元素的值?q 指針指針與一維與一維數(shù)組數(shù)組l 在在 C+ 中,引用數(shù)組元素有以下三種方式:中,引用數(shù)組元素有以下三種方式:(1) 數(shù)組名與下標(biāo),數(shù)組名與下標(biāo),如:如:a0(2) 數(shù)組名與指針運(yùn)算,數(shù)組名與指針運(yùn)算,如:如:*(a+1)(3) 指針,指針,如:如:int * pa=a; *pal 指針的值可以隨時(shí)改變,即可以指向不同的元素;指針的值可以隨時(shí)改變,即可以指向不同的元素;l 數(shù)組名是常量指針,值不能改變。數(shù)組名是常量指針,值不能改變。ex_pointer_03.cpp34/ 指針與數(shù)組 #include #

26、include using namespace std;int main() int a = 0,2,4,6,8; int * pa = a; cout a0= a0 , a1= a1 , a2= a2 endl; *pa = 1; / OK, equivalent to a0=1 *(pa+2) = 5; / OK, equivalent to a2=5 / *(a+2) = 5; / OK cout a0= a0 , a1= a1 , a2= a2 endl; *(pa+) = 3; / OK, equivalent to a0=3; pa = pa + 1; / *pa = 6; 35/

27、 *(a+) = 3; / ERROR / *(a+1) = 5; / OK cout a0= a0 , a1= a1 , a2= a2 endl; cout endl; system(pause); return 0;36舉例舉例例:例:使用三種方法輸出一個(gè)數(shù)組的所有元素使用三種方法輸出一個(gè)數(shù)組的所有元素/ 第一種方式:數(shù)組名與下標(biāo)第一種方式:數(shù)組名與下標(biāo)for (int i=0; in; i+) cout ai , ;/ 第二種方式:數(shù)組名與指針運(yùn)算第二種方式:數(shù)組名與指針運(yùn)算 for (int i=0; in; i+) cout *(a+i) , ;/ 第三種方式:指針第三種方式:指針

28、for (int *pa=a; paa+n; pa+) cout *pa , ; / 第三種方式:指針第三種方式:指針 for (int *pa=a, i=0; in; i+) cout pai , ; 若若pa是指針,是指針,k是整型數(shù)值,則是整型數(shù)值,則*(pa+k) 可以寫成可以寫成 pak *(pa-k) 可以寫成可以寫成 pa-kex_pointer_04.cpp37/ 用三種方式輸出數(shù)值的元素 #include #include using namespace std;int main() const int n = 5; int an = 0,2,4,6,8; / 第一種方式:數(shù)

29、組名與下標(biāo) cout 第一種方式:數(shù)組名與下標(biāo):n ; for (int i=0; in; i+) cout ai ,; cout nn ; / 第二種方式:數(shù)組名與指針運(yùn)算 cout 第二種方式:數(shù)組名與指針運(yùn)算:n ; for (int i=0; in; i+) 38cout *(a+i) ,; cout nn ; / 第三種方式:指針 cout 第三種方式:指針:n ; for (int *pa=a; paa+n; pa+) cout *pa ,; cout nn ; / 第三種方式:指針 cout 第三種方式:指針(二):n ; for (int *pa=a, i=0; in; i+)

30、 cout pai , ; cout nn ; system(pause); return 0;39指針數(shù)組指針數(shù)組int a=0,2,4,8;int b=1,3,5,7;int c=2,3,5,8;int *pa3=a,b,c; / 聲明一個(gè)有三個(gè)元素的指針聲明一個(gè)有三個(gè)元素的指針數(shù)組數(shù)組 / pa0=a, pa1=b, pa2=cq 指針數(shù)組指針數(shù)組:數(shù)組的元素都是指針變量數(shù)組的元素都是指針變量l 指針數(shù)組的聲明:指針數(shù)組的聲明:類型標(biāo)識(shí)符類型標(biāo)識(shí)符 * 指針數(shù)組名指針數(shù)組名n ex_pointer_05.cpp例:例:使用三種方法引用數(shù)組元素使用三種方法引用數(shù)組元素40/ 指針數(shù)組 #i

31、nclude #include using namespace std;int main() const int n = 5; int an = 10,12,14,16,18; int bn = 20,22,24,26,28; int cn = 30,32,34,36,38; int *pa3=a,b,c; cout 使用方括號(hào):n; for (int k=0; k3; k+) for (int i=0; in; i+) cout paki ; cout n ; 41 cout n使用方括號(hào)和指針運(yùn)算:n ; for (int k=0; k3; k+) for (int i=0; in; i+

32、) cout *(pak+i) ; cout n ; cout n僅使用指針運(yùn)算:n ; for (int k=0; k3; k+) for (int i=0; in; i+) cout *(*(pa+k)+i) ; cout n ; cout endl;system(pause);return 0;42指針與二維數(shù)組指針與二維數(shù)組例:例:int A23=1,2,3,7,8,9;C+中,二維數(shù)組是按行順序存放在內(nèi)存中的,可以理解為一中,二維數(shù)組是按行順序存放在內(nèi)存中的,可以理解為一維數(shù)組組成的一維數(shù)組。維數(shù)組組成的一維數(shù)組。A0 A00 A01 A02 A1 A10 A11 A12A可以理解為

33、:可以理解為:A00A01A02A10A11A12A0A1(第一行的首地址)(第一行的首地址)(第二行的首地址)(第二行的首地址)A0, A1 稱為稱為行數(shù)組行數(shù)組43指針與二維數(shù)組指針與二維數(shù)組int A23=1,2,3,7,8,9;int *pa = A0; / 行數(shù)組行數(shù)組A0的首地址的首地址, 等價(jià)于等價(jià)于 pa=&A00int *pa1 = A1; / 行數(shù)組行數(shù)組A1的首地址,即的首地址,即 &A10*pa = 11; / 等價(jià)于等價(jià)于 A00=11*(pa+2) = 12; / 等價(jià)于等價(jià)于 A02=12*(pa+4) = 13; / 等價(jià)于等價(jià)于 A11=13ex_pointe

34、r_06.cppl 引用二維數(shù)組的元素可以通過數(shù)組名和指針運(yùn)算進(jìn)行引用二維數(shù)組的元素可以通過數(shù)組名和指針運(yùn)算進(jìn)行for (int i=0; im; i+) for (int j=0; jn; j+) cout *(*(A+i)+j); cout n; ex_pointer_07.cpp44/ 二維數(shù)組 #include #include #include using namespace std;void print_matrix(int A3, int m, int n)/ print matrix A with dimension m X n int i, j; for (i=0; im;

35、i+) for (j=0; jn; j+) cout setw(3) Aij; cout n; cout endl; 45int main() const int n = 5; int A23 = 1,2,3,7,8,9; / int *pA = A; / / ERROR int *pa = A0; int *pa1 = A1; cout *pa= *pa nn; cout *pa1= *pa1 nn; *pa = 11; print_matrix(A,2,3); *(pa+2) = 12; print_matrix(A,2,3); *(pa+4) = 13; print_matrix(A,2

36、,3); system(pause); return 0; 46/ 二維數(shù)組 #include #include #include using namespace std;int main() const int m = 3, n = 4; int Amn = 11,12,13,14, 21,22,23,24, 31,32,33,34; cout A = n; for (int i=0; im; i+) for (int j=0; jn; j+) cout setw(3) *( *(A + i) + j ); cout n; cout endl; system(pause); return 0

37、; 47指針與二維數(shù)組指針與二維數(shù)組對(duì)于二維數(shù)組 A,雖然 A、A0 都是數(shù)組首地址,但二者指向的對(duì)象不同:A0 是一維數(shù)組的名字,它指向的是行數(shù)組 A0 的首元素,對(duì)其進(jìn)行 “*” 運(yùn)算時(shí),得到的是 A0 的首元素的值,即 *A0 與 A00 是相同的;而 A 是一個(gè)二維數(shù)組的名字,它指向的是它的首元素,而它的元素都是一維數(shù)組(即行數(shù)組),因此,它的指針移動(dòng)單位是 “行”,所以 A+i 指向的是第 i 個(gè)行數(shù)組,即指向 Ai。對(duì) A 進(jìn)行 “*” 運(yùn)算時(shí),得到的是一維數(shù)組A0 的首地址,即 *A 與 A0 是同一個(gè)值。int A23=1,2,3,7,8,9;int *pA = A; / ER

38、ROR!int *pa = A0; / OK當(dāng)用 int *p 定義指針 p 時(shí),p 指向的是一個(gè) int 型數(shù)據(jù),而不是一個(gè)地址,因此,用 A0 對(duì) p 賦值是正確的,而用 A 對(duì) p 賦值是錯(cuò)誤的!48行指針行指針int A34;int (*pA)4 = A; / OK!注意:不能寫成!注意:不能寫成 (*pA)3!l 行指針行指針/指向一維數(shù)組的指針:指向一維數(shù)組的指針: 以一維數(shù)組為基本類型,即將一維數(shù)組看作一個(gè)整體以一維數(shù)組為基本類型,即將一維數(shù)組看作一個(gè)整體類型標(biāo)識(shí)符類型標(biāo)識(shí)符 (* 指針名指針名)n 該指針以長(zhǎng)度為該指針以長(zhǎng)度為 n 的一維數(shù)組為基本單位的一維數(shù)組為基本單位for

39、 (int i=0; im; i+) for (int j=0; jn; j+) cout *(*(pA + i) + j ); cout n; ex_pointer_08.cpp49/ 指針與二維數(shù)組 #include #include #include using namespace std;int main() const int m = 3, n = 4; int Amn = 11,12,13,14, 21,22,23,24, 31,32,33,34; int (*pA)n = A; / 注意,這里是 n! cout 利用指向一維數(shù)組的指針:nA = n; for (int i=0;

40、im; i+) for (int j=0; jn; j+) cout setw(3) *( *(pA + i) + j ); cout n; 50cout n利用指針數(shù)組:nA = n; / int *pA2m = A; / ERROR! int *pA2m = A0, A1, A2; / 注意,這里是 m! for (int i=0; im; i+) for (int j=0; jn; j+) cout setw(3) *( *(pA2 + i) + j ); cout n; cout endl; system(pause); return 0;51指針與數(shù)組指針與數(shù)組q 一維數(shù)組一維數(shù)組

41、an 與指針與指針 pa = a l 數(shù)組名數(shù)組名 a 是是地址常量地址常量,數(shù)組名,數(shù)組名 a 與與 &a0 等價(jià);等價(jià);l a+i 是是 ai 的地址,的地址,ai 與與 *(a+i) 等價(jià);等價(jià);l 數(shù)組元素的下標(biāo)訪問方式也是按地址進(jìn)行的;數(shù)組元素的下標(biāo)訪問方式也是按地址進(jìn)行的;l 可以通過指針可以通過指針 pa 訪問數(shù)組的任何元素,且更加靈活;訪問數(shù)組的任何元素,且更加靈活;l pa+ 或或 +pa 合法,但合法,但 a+ 不合法;不合法;l *(pa+i) 與與 pai 等價(jià),表示第等價(jià),表示第 i+1 的元素;的元素;ai pai *(pa+i) *(a+i)52指針與數(shù)組指針與數(shù)

42、組q 二維數(shù)組二維數(shù)組 Amnl 數(shù)組名數(shù)組名 A 是是行地址常量行地址常量,數(shù)組名,數(shù)組名 A 與與 &A00 等價(jià);等價(jià);l A+i=&Ai, *(A+i)=Ai=&Ai0; Aij *(Ai+j) *(*(A+i)+j) (*(A+i)j *(&A00+n*i+j)q 二維數(shù)組二維數(shù)組 Amn 與行指針與行指針 (*pA)n=Al pA=A, A+i=pA+i, *(A+i)+j=*(pA+i)+j; Aij pAij *(*(pA+i)+j)53二級(jí)指針(略)二級(jí)指針(略)q 二級(jí)指針:指向指針的指針變量二級(jí)指針:指向指針的指針變量二級(jí)指針存放的是另一個(gè)指針的地址二級(jí)指針存放的是另一個(gè)

43、指針的地址注:這部分內(nèi)容教材上沒有。注:這部分內(nèi)容教材上沒有。類型標(biāo)識(shí)符類型標(biāo)識(shí)符 * 指針名指針名int a = 3;int *pa = &a;int *ppa = &pa; / OK!注意:不能寫成!注意:不能寫成 (*pA)3!ex_pointer_09.cpp54指針與引用指針與引用l 引用是變量的別名;引用是變量的別名;l 引用必須初始化,且不能修改;引用必須初始化,且不能修改;l 引用只針對(duì)變量,函數(shù)沒有引用;引用只針對(duì)變量,函數(shù)沒有引用;l 傳遞大量數(shù)據(jù)時(shí),最好使用指針;傳遞大量數(shù)據(jù)時(shí),最好使用指針;l 用引用能實(shí)現(xiàn)的功能,用指針都能實(shí)現(xiàn)。用引用能實(shí)現(xiàn)的功能,用指針都能實(shí)現(xiàn)。q

44、引用作為函數(shù)參數(shù)的優(yōu)點(diǎn)引用作為函數(shù)參數(shù)的優(yōu)點(diǎn)l 傳遞方式與指針類似,但可讀性強(qiáng);傳遞方式與指針類似,但可讀性強(qiáng);l 函數(shù)調(diào)用比指針更簡(jiǎn)單、安全;函數(shù)調(diào)用比指針更簡(jiǎn)單、安全;q 引用與指針引用與指針int a = 3;int *pa = &a; / 指針指針int &ra = a; / 引用引用 55指針作為函數(shù)參數(shù)指針作為函數(shù)參數(shù)l 以地址方式傳遞數(shù)據(jù)。以地址方式傳遞數(shù)據(jù)。l 形參是指針時(shí),實(shí)參可以是指針或地址。形參是指針時(shí),實(shí)參可以是指針或地址。q 指針作為函數(shù)參數(shù)指針作為函數(shù)參數(shù)當(dāng)函數(shù)間需要傳遞大量數(shù)據(jù)時(shí),開銷會(huì)很大。此時(shí),如果數(shù)當(dāng)函數(shù)間需要傳遞大量數(shù)據(jù)時(shí),開銷會(huì)很大。此時(shí),如果數(shù)據(jù)是據(jù)是

45、連續(xù)存放連續(xù)存放的,則可以只傳遞數(shù)據(jù)的的,則可以只傳遞數(shù)據(jù)的首地址首地址,這樣就可以,這樣就可以減小開銷,提高執(zhí)行效率!減小開銷,提高執(zhí)行效率!void split(double x, int *n, double *f)double x, x2; int x1; split(x, &n, &f)ex_pointer_10.cpp56/ 取整數(shù)部分與小數(shù)部分 #include #include #include using namespace std;void split(double x, int *n, double *f) *n = int(x); / 取整數(shù)部分 *f = x - *n

46、; / 小數(shù)部分 int main() double x, x2; / x2 存放小數(shù)部分 int x1; / x1 存放整數(shù)部分 cout x; split(x, &x1, &x2); cout 整數(shù)部分: x1 endl; cout 小數(shù)部分: x2 endl; cout endl; system(pause);return 0; 57指針作為函數(shù)參數(shù)指針作為函數(shù)參數(shù)l 使形參和實(shí)參指向共同的內(nèi)存地址;使形參和實(shí)參指向共同的內(nèi)存地址;l 減小函數(shù)間數(shù)據(jù)傳遞的開銷;減小函數(shù)間數(shù)據(jù)傳遞的開銷;l 傳遞函數(shù)代碼的首地址傳遞函數(shù)代碼的首地址q 指針作為函數(shù)參數(shù)指針作為函數(shù)參數(shù)的三個(gè)作用的三個(gè)作用T

47、ips:如果在被調(diào)函數(shù)中不需要改變指針?biāo)赶虻膶?duì)象的值,如果在被調(diào)函數(shù)中不需要改變指針?biāo)赶虻膶?duì)象的值,則可以將形參中的指針聲明為指向常量的指針。則可以將形參中的指針聲明為指向常量的指針。58指針型函數(shù)指針型函數(shù)當(dāng)函數(shù)的返回值是當(dāng)函數(shù)的返回值是地址地址時(shí),該函數(shù)就是時(shí),該函數(shù)就是指針指針型型函數(shù)函數(shù)q 指針型函數(shù)的定義指針型函數(shù)的定義數(shù)據(jù)類型數(shù)據(jù)類型 *函數(shù)名函數(shù)名(形參列表)(形參列表) 函數(shù)體函數(shù)體59指向函數(shù)的指針指向函數(shù)的指針在程序運(yùn)行過程中,不僅數(shù)據(jù)要占用內(nèi)存空間,在程序運(yùn)行過程中,不僅數(shù)據(jù)要占用內(nèi)存空間,函數(shù)函數(shù)也要在也要在內(nèi)存中占用一定的空間。內(nèi)存中占用一定的空間。函數(shù)名就代表函

48、數(shù)在內(nèi)存空間中的函數(shù)名就代表函數(shù)在內(nèi)存空間中的首地址首地址。用來(lái)存放這個(gè)地址。用來(lái)存放這個(gè)地址的的指針就是指向該函數(shù)的指針。指針就是指向該函數(shù)的指針。q 函數(shù)指針函數(shù)指針的定義的定義Tips:可以象使用函數(shù)名一樣使用函數(shù)指針。可以象使用函數(shù)名一樣使用函數(shù)指針。注:注:函數(shù)名除了表示函數(shù)的首地址外,還包括函數(shù)的返函數(shù)名除了表示函數(shù)的首地址外,還包括函數(shù)的返回值類型,形參個(gè)數(shù)、類型、順序等信息?;刂殿愋停螀€(gè)數(shù)、類型、順序等信息。數(shù)據(jù)類型數(shù)據(jù)類型 (*函數(shù)指針名)函數(shù)指針名)(形參列表)(形參列表)l 這里的這里的數(shù)據(jù)類型數(shù)據(jù)類型和形參列表應(yīng)與其和形參列表應(yīng)與其指向的函數(shù)指向的函數(shù)相同相同60函

49、數(shù)指針函數(shù)指針l 函數(shù)指針需要賦值后才能使用函數(shù)指針需要賦值后才能使用ex_pointer_11.cppint Gcd(int x, int y); int Lcm(int x, int y); int (*pf)(int, int); / 聲明函數(shù)指針聲明函數(shù)指針 pf = Gcd; / pf 指向函數(shù)指向函數(shù) Gcd cout 最大公約數(shù)最大公約數(shù): pf(a,b) endl;pf = Lcm; / pf 指向函數(shù)指向函數(shù) Lcm cout 最小公倍數(shù)最小公倍數(shù): pf(a,b) endl;61/ 函數(shù)指針 #include #include #include using namespac

50、e std;int Gcd(int x, int y) / 最大公約數(shù) int z = x; if (x y) z = y; / 取 x 和 y 中的最小值 for (int i=z; i=1; i-) if (x%i=0 & y%i=0) return i;int Lcm(int x, int y) / 最小公倍數(shù) for (int i=1; i=x; i+) if ( i*y % x = 0) return i*y; 62int main() int a, b; int (*pf)(int, int); / 聲明函數(shù)指針 cout a b; pf = Gcd; / pf 指向函數(shù) Gcd

51、cout 最大公約數(shù): pf(a,b) endl; pf = Lcm; / pf 指向函數(shù) Lcm cout 最小公倍數(shù): pf(a,b) endl; cout endl; system(pause);return 0; 636.3動(dòng)態(tài)存儲(chǔ)分配動(dòng)態(tài)存儲(chǔ)分配l 申請(qǐng)內(nèi)存空間申請(qǐng)內(nèi)存空間:newl 釋放內(nèi)存空間釋放內(nèi)存空間:delete若在程序運(yùn)行之前,不能夠確切知道數(shù)組中元素的個(gè)數(shù),如果若在程序運(yùn)行之前,不能夠確切知道數(shù)組中元素的個(gè)數(shù),如果聲明為很大的數(shù)組,則可能造成浪費(fèi),如果聲明為小數(shù)組,則聲明為很大的數(shù)組,則可能造成浪費(fèi),如果聲明為小數(shù)組,則可能不夠用。此時(shí)需要可能不夠用。此時(shí)需要?jiǎng)討B(tài)分配動(dòng)

52、態(tài)分配空間,做到按需分配??臻g,做到按需分配。q 動(dòng)態(tài)內(nèi)存分配相關(guān)函數(shù)動(dòng)態(tài)內(nèi)存分配相關(guān)函數(shù)每個(gè)程序在執(zhí)行時(shí)都會(huì)占用一塊可用的內(nèi)存,用于存放動(dòng)每個(gè)程序在執(zhí)行時(shí)都會(huì)占用一塊可用的內(nèi)存,用于存放動(dòng)態(tài)分配的對(duì)象,此內(nèi)存空間稱為自由存儲(chǔ)區(qū)(態(tài)分配的對(duì)象,此內(nèi)存空間稱為自由存儲(chǔ)區(qū)(free store)或堆(或堆(heap)。)。64申請(qǐng)內(nèi)存空間申請(qǐng)內(nèi)存空間px = new 數(shù)據(jù)類型數(shù)據(jù)類型;l 申請(qǐng)單個(gè)存儲(chǔ)單元申請(qǐng)單個(gè)存儲(chǔ)單元px = new 數(shù)據(jù)類型數(shù)據(jù)類型(初始值)(初始值);申請(qǐng)用于存放指定數(shù)據(jù)類型數(shù)據(jù)的內(nèi)存空間,若申請(qǐng)成功,申請(qǐng)用于存放指定數(shù)據(jù)類型數(shù)據(jù)的內(nèi)存空間,若申請(qǐng)成功,則返回該內(nèi)存空間的地

53、址,并賦值給則返回該內(nèi)存空間的地址,并賦值給指針指針 px;若申請(qǐng)不成功,則若申請(qǐng)不成功,則返回返回 0 或或 NULL。delete px; / 釋放由釋放由 new 申請(qǐng)的內(nèi)存空間申請(qǐng)的內(nèi)存空間注:注:px 必須是由必須是由 new 操作的返回值!操作的返回值!65動(dòng)態(tài)創(chuàng)建數(shù)組動(dòng)態(tài)創(chuàng)建數(shù)組l 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組px = new 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度;px = new 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度(); / 賦初值賦初值 0delete px; / 釋放由釋放由 new 建立的數(shù)組建立的數(shù)組l 創(chuàng)建多維數(shù)組創(chuàng)建多維數(shù)組px = new 數(shù)據(jù)類型數(shù)據(jù)類型n1n2.nm;注

54、:此時(shí)注:此時(shí) px 不是普通的指針,而是:不是普通的指針,而是: (* px)n2.nm這里初始化時(shí)只能將全部元素設(shè)置為這里初始化時(shí)只能將全部元素設(shè)置為 0,而,而不能象數(shù)組變不能象數(shù)組變量那樣用初始化列表賦初值。量那樣用初始化列表賦初值。66動(dòng)態(tài)存儲(chǔ)舉例動(dòng)態(tài)存儲(chǔ)舉例例:例:給定一個(gè)正整數(shù)給定一個(gè)正整數(shù) N,求出,求出 N 個(gè)最小的素?cái)?shù)個(gè)最小的素?cái)?shù)int main() int N; cout N; int *pa = new intN; / / 申請(qǐng)內(nèi)存空間申請(qǐng)內(nèi)存空間 int i, flag, k=0, n=2; while (k N) / / 尋尋找找 N 個(gè)個(gè)素?cái)?shù)素?cái)?shù) flag = 0

55、; for(i=2; in; i+) if (n % i = 0) flag = 1; break; if (flag=0) pak = n; k+; n+; ex_pointer_20.cppfor(i=0; ik & pai=sqrt(n); i+) if (n % pai = 0) flag = 1; break;67/ 動(dòng)態(tài)存儲(chǔ) #include #include using namespace std;int main() int N; cout N; int *pa = new intN; int i, flag, k=0, n=2; while (k N) flag = 0; /

56、 for(i=2; in; i+)/ if (n % i = 0) flag = 1; break; 68for(i=0; ik & pai=sqrt(n); i+) if (n % pai = 0) flag = 1; break; if (flag=0) pak = n; k+; n+; cout 最小的 N 個(gè)素?cái)?shù)為: n; for(int i=0; iN; i+) cout *(pa+i) , ; cout str; l 輸入單個(gè)字符串時(shí),中間不能有空格輸入單個(gè)字符串時(shí),中間不能有空格l 一次輸入多個(gè)字符串時(shí),以空格隔開一次輸入多個(gè)字符串時(shí),以空格隔開q 字符串的輸入字符串的輸入cha

57、r str5=math; cout str; l 輸出字符中不含輸出字符中不含 0l 可使用下標(biāo)輸出單個(gè)字符可使用下標(biāo)輸出單個(gè)字符ex_str_01.cpp71/ 字符串 #include #include using namespace std;int main() char str16=math; char str2=math; cout str1: str1 endl; cout str2: str2 endl; cout sizeof(str1)= sizeof(str1) endl; cout sizeof(str2)= sizeof(str2) endl; cout str1 st

58、r2 str3; 運(yùn)行時(shí)輸入數(shù)據(jù):運(yùn)行時(shí)輸入數(shù)據(jù):How are you?內(nèi)存中變量狀態(tài)如下:內(nèi)存中變量狀態(tài)如下:How0are0you?0str1:str2:str3:char str13; cin str; 運(yùn)行時(shí)輸入數(shù)據(jù):運(yùn)行時(shí)輸入數(shù)據(jù):How are you?內(nèi)存中變量狀態(tài)如下:內(nèi)存中變量狀態(tài)如下:str1: How0ex_str_02.cpp73/ 字符串#include #include using namespace std;int main() char str15, str25, str35; cout str1 str2 str3; cout str1: str1 endl

59、; cout str2: str2 endl; cout str3: str3 endl; char str13; cout str; cout str: str endl; cout endl; system(pause); return 0; 74字符串輸入字符串輸入char str13; cin.getline(str,13); ex_str_03.cppcin.getline(str,N,結(jié)束符結(jié)束符);l 連續(xù)讀入多個(gè)字符(可以有空格),直到讀滿連續(xù)讀入多個(gè)字符(可以有空格),直到讀滿 N 個(gè),或遇個(gè),或遇到指定的結(jié)束符到指定的結(jié)束符l 不存儲(chǔ)結(jié)束符不存儲(chǔ)結(jié)束符l 結(jié)束符可以省略,默

60、認(rèn)為結(jié)束符可以省略,默認(rèn)為 n (換行)(換行)q 單個(gè)字符的輸入單個(gè)字符的輸入getchar();char ch; ch=getchar(); 75/ 字符串#include #include using namespace std;int main() char str13; cout Input string: ; cin.getline(str,13,e); cout str: str :EOF: endl; cout 成員名成員名Point a(1,2);Point *pa = &a;例:例:也可以使用普通方式,即:也可以使用普通方式,即: (*對(duì)象指針名對(duì)象指針名).成員名成員名8

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論