C++大學(xué)基礎(chǔ)教程第六章市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第1頁
C++大學(xué)基礎(chǔ)教程第六章市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第2頁
C++大學(xué)基礎(chǔ)教程第六章市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第3頁
C++大學(xué)基礎(chǔ)教程第六章市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第4頁
C++大學(xué)基礎(chǔ)教程第六章市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++大學(xué)基礎(chǔ)教程第6章指針和引用

北京科技大學(xué)計(jì)算機(jī)系/10/101北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第1頁第六章指針和引用6.1指針概念6.2指針運(yùn)算6.3指針和函數(shù)6.4指針和字符串6.5經(jīng)過指針訪問數(shù)組6.6指針訪問動(dòng)態(tài)內(nèi)存6.7引用概念/10/102北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第2頁關(guān)于內(nèi)存地址內(nèi)存空間訪問方式經(jīng)過變量名訪問經(jīng)過地址訪問地址運(yùn)算符:&例:intvar;則&var表示變量var在內(nèi)存中起始地址/10/103北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第3頁申明例:staticinti;staticint*i_pointer=&i;

指向整型變量指針指針變量概念概念指針:地址

用于間接訪問變量指針變量:

用于存放地址變量目標(biāo)變量:

3i_pointer*i_pointeri內(nèi)存用戶數(shù)據(jù)區(qū)變量i變量j變量

i_pointer363010引用例1:i=3;例2:*i_pointer=3;指針/10/104北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第4頁小結(jié)幾個(gè)概念:指針,指針變量,目標(biāo)變量符號(hào)*:在定義中表示變量為指針變量運(yùn)算符:&:取地址運(yùn)算符*:指向運(yùn)算符/10/105北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第5頁指針變量定義和初始化語法形式

[存放類型]

數(shù)據(jù)類型*指針名=初始地址;例:inta;int*pa=&a;注意事項(xiàng)用變量地址作為初值時(shí),該變量必須在指針初始化之前已說明過,且變量類型應(yīng)與指針類型一致。能夠用一個(gè)已賦初值指針去初始化另一個(gè)指針變量。charch1=’Y’,ch2=’A’;char*pch1=&ch1,*pch2=&ch2;/10/106北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第6頁

例1指針概念main(){inta;int*pa=&a;a=10;cout<<"a:"<<a<<endl;cout<<"*pa"<<*pa<<endl; cout<<"&a:(Hex)"<<HEX<<&a<<endl; cout<<"pa:(HEX)"<<HEX<<pa<<endl; cout<<"&pa:(HEX)"<<HEX<<&pa<<endl;}

a:10*pa:10&a:bb4(HEX)pa:bb4(HEX)&pa:bb2(HEX)/10/107北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第7頁6.2指針運(yùn)算

/10/108北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第8頁6.2指針運(yùn)算表6.1指針運(yùn)算/10/109北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第9頁6.2.1指針賦值運(yùn)算

指針=地址指針賦值運(yùn)算一定是地址賦值。用來對(duì)指針變量賦值能夠是:同類型變量地址;同類型已經(jīng)初始化指針變量;其它同類型指針。“地址”中存放數(shù)據(jù)類型與指針類型必須相符。注意:不一樣類型指針是不能夠相互賦值。在指針賦值時(shí),不存在類型自動(dòng)轉(zhuǎn)換機(jī)制。向指針變量賦值必須是地址常量或變量,不能是普通整數(shù)。但能夠賦值為整數(shù)0,表示空指針。另外,也能夠用0或者NULL對(duì)指針變量賦值。使得變量包含是“空指針”,即不指向任何內(nèi)存物理地址。/10/1010北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第10頁

例6.1觀察以下指針賦值運(yùn)算結(jié)果。假如將注釋去掉,結(jié)果將怎樣?#include<iostream>usingnamespacestd;voidmain(){intva1=100,*pva1;floatvf1=1.0,*pvf1,*pvf2;int*pva2=NULL;cout<<"valueofpva2is"<<pva2<<endl;pva1=&va1;pvf1=pvf2=&vf1;cout<<pva1<<""<<&va1<<endl;cout<<pvf1<<""<<pvf2<<endl;

//pvf1=pva1;}valueofpva2is0x000000000x0012FF7C0x0012FF7C0x0012FF740x0012FF74注釋去掉會(huì)出現(xiàn)編譯錯(cuò)誤/10/1011北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第11頁例指針定義、賦值與使用#include<iostream.h>voidmain(){ int*i_pointer; //申明int型指針i_pointer inti; //申明int型數(shù)i i_pointer=&i; //取i地址賦給i_pointer i=10; //int型數(shù)賦初值

cout<<"Outputinti="<<i<<endl;//輸出int型數(shù)值

cout<<"Outputintpointeri="<<*i_pointer<<endl;

//輸出int型指針?biāo)傅刂穬?nèi)容}/10/1012北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第12頁6.2.2間接引用運(yùn)算

間接引用運(yùn)算符“*”是一個(gè)一元算符,它和指針變量連用,對(duì)指針?biāo)赶騼?nèi)存地址單元進(jìn)行間接訪問。使用格式是:

*指針變量假如指針變量iptr指向整型變量va,*iptr就是變量va內(nèi)容/10/1013北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第13頁

例6.2對(duì)變量直接訪問和間接訪問:寫出以下程序運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;voidmain(){charch1='a',*ch;intk1=100;ch=&ch1; //指針ch指向變量ch1cout<<"*ch="<<*ch<<endl; //間接訪問*ch='B';cout<<"ch1="<<ch1<<endl; //直接訪問

ch1=k1;cout<<"*ch="<<*ch<<endl; //間接訪問

}運(yùn)行結(jié)果:*ch=ach1=B*ch=d/10/1014北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第14頁

例6.3定義指向指針指針變量。觀察對(duì)這種指針變量間接訪問結(jié)果。#include<iostream>usingnamespacestd;voidmain(){intva=100,*pva,**ppva;//ppva是指向指針指針

intk1=100;pva=&va;cout<<"*pva="<<*pva<<endl; //間接訪問結(jié)果是整型數(shù)

ppva=&pva;cout<<"*ppva="<<*ppva<<endl;//間接訪問結(jié)果是地址

cout<<"pva="<<pva<<endl; //就是指針pva內(nèi)容}運(yùn)行結(jié)果:*pva=100*ppva=0x0012FF7Cpva=0x0012FF7C

/10/1015北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第15頁6.2.2間接引用運(yùn)算/10/1016北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第16頁6.2.3指針?biāo)阈g(shù)運(yùn)算

指針能夠進(jìn)行算術(shù)運(yùn)算只有加法和減法。指針能夠和一個(gè)整數(shù)n做加法或者減法運(yùn)算。指針p和整數(shù)n相加(相減)含義是指向當(dāng)前指向位置p前方或后方第n個(gè)數(shù)據(jù)地址。/10/1017北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第17頁

例6.4經(jīng)過指針間接訪問,輸出下標(biāo)為偶數(shù)數(shù)組元素值。#include<iostream>usingnamespacestd;voidmain(){intk1[10]={11,24,37,44,58,66,79,86,93,108},*k;k=&k1[0]; for(inti=0;i<10;i=i+2)

cout<<"k1["<<i<<"]="<<*(k+i)<<"";cout<<endl;}

運(yùn)行結(jié)果:K1[0]=11k1[2]=37….

數(shù)組第一個(gè)元素(下標(biāo)為0)地址賦值給指針k

每次循環(huán),指針加2/10/1018北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第18頁6.2.3指針?biāo)阈g(shù)運(yùn)算指針和指針直接加法是沒有意義,也是不允許。指針和指針減法是能夠進(jìn)行,其意義是求出兩個(gè)指針之間能夠存放幾個(gè)指定類型數(shù)據(jù)。不允許用一個(gè)整數(shù)減一個(gè)指針。/10/1019北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第19頁6.2.4指針關(guān)系運(yùn)算和邏輯運(yùn)算

相同類型指針能夠進(jìn)行各種關(guān)系運(yùn)算。比較兩個(gè)指針相等還是不相等。進(jìn)行指針“大于”、“小于”比較,只是要判定指針在內(nèi)存中相對(duì)位置。指向不一樣數(shù)據(jù)類型指針,指針和普通整數(shù)比較是沒有意義,也是不允許。惟一能夠和指針比較整數(shù)是0。經(jīng)過指針和0比較來判定指針本身是不是空指針。即指針能夠和零之間進(jìn)行等于或不等于關(guān)系運(yùn)算。比如:p==0或p!=0/10/1020北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第20頁6.2.5void類型指針

void類型指針就是“無類型”指針。申明方式以下: void*<指針名>;void類型指針變量中存放也是內(nèi)存地址,不過不指定這個(gè)地址單元內(nèi)數(shù)據(jù)類型。/10/1021北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第21頁6.2.5void類型指針

void類型指針使用:任何其它類型指針都能夠賦值給void指針。必須注意,這么賦值后void指針類型依然是void。void類型指針不能夠直接賦值給任何其它類型指針。不論何時(shí),void指針都不能夠經(jīng)過間接引用來訪問內(nèi)存中數(shù)據(jù)。要經(jīng)過void類型指針訪問內(nèi)存數(shù)據(jù),必須進(jìn)行指針類型強(qiáng)制轉(zhuǎn)換,才能夠經(jīng)過指針間接引用訪問內(nèi)存數(shù)據(jù)。/10/1022北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第22頁

例6.5使用memcpy通用復(fù)制函數(shù)復(fù)制數(shù)組。

#include<iostream>usingnamespacestd;#include<string.h>voidmain(){charsrc[10]="012345678";chardest[10];char*pc=(char*)memcpy(dest,src,10);

cout<<pc<<endl;ints1[3]={1,2,3};intd1[3];int*pi=(int*)memcpy(d1,s1,12);

cout<<*pi<<""<<*(pi+1)<<""<<*(pi+2)<<endl;}

運(yùn)行結(jié)果:012345678123

復(fù)制字符數(shù)據(jù),10個(gè)字節(jié)復(fù)制整型數(shù)據(jù),12個(gè)字節(jié)/10/1023北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第23頁6.2.5void類型指針

void類型指針還有一個(gè)詳細(xì)應(yīng)用:顯示字符指針內(nèi)容。除了字符指針外,其它指針都能夠直接用cout語句來輸出地址值。不過,用cout輸出字符指針時(shí),則是輸出它所指向字符串。能夠?qū)⒆址羔槒?qiáng)制轉(zhuǎn)換為void指針,再用cout語句輸出,就能夠看到地址值。如:char*pch="HelloC++";cout<<pch<<endl;cout<<(void*)pch<<endl;

inta[3]={1,2,3};cout<<a<<endl;cout<<*a<<endl;charc[]=“hello”;cout<<c<<endl;cout<<*c<<endl;cout<<c+1<<endl;/10/1024北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第24頁6.3指針和函數(shù)

/10/1025北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第25頁6.3指針和函數(shù)在程序設(shè)計(jì)中,指針有很多應(yīng)用。其中之一就是用指針作為函數(shù)參數(shù),從而形成了C++函數(shù)調(diào)用中另一個(gè)調(diào)用方式:地址調(diào)用。/10/1026北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第26頁6.3.1指針作為函數(shù)參數(shù)用指針作為函數(shù)參數(shù),實(shí)現(xiàn)地址調(diào)用,必須滿足以下條件:函數(shù)形式參數(shù)是指針變量;函數(shù)實(shí)參數(shù)是內(nèi)存地址,詳細(xì)來說能夠是數(shù)組名、變量地址、用變量地址初始化指針;形參指針類型和實(shí)參地址類型必須相同。/10/1027北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第27頁6.3.1指針作為函數(shù)參數(shù)滿足以上條件后,這么函數(shù)調(diào)用在使用上有以下特點(diǎn):實(shí)參傳遞給形參是內(nèi)存地址,所以形參指針指向?qū)崊⒆兞?;形參指針?jīng)過間接引用,直接訪問實(shí)參變量,包含改變實(shí)參變量值;函數(shù)調(diào)用后,能夠保留對(duì)實(shí)參變量操作結(jié)果,假如有多個(gè)實(shí)參,就能夠有多個(gè)實(shí)參變量在函數(shù)調(diào)用中得到修改。/10/1028北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第28頁

例6.6編寫數(shù)據(jù)交換函數(shù)。在main中調(diào)用這個(gè)函數(shù),交換main中定義變量。

#include<iostream>usingnamespacestd;voidSwap(int*a,int*b);voidmain(){ intx(5),y(10);

cout<<"主函數(shù)變量值:

x="<<x<<"y="<<y<<endl; Swap(&x,&y); cout<<"返回后變量值:

x="<<x<<"y="<<y<<endl;}voidSwap(int*a,int*b){ intt; t=*a; *a=*b; *b=t;cout<<"函數(shù)中完成了交換:*a="<<*a<<"*b="<<*b<<endl;}

運(yùn)行結(jié)果:主函數(shù)變量值:x=5y=10函數(shù)中完成了交換:*a=10*b=5返回后變量值:

x=10y=5

變量地址作為實(shí)參數(shù)指針變量作為形式參數(shù)函數(shù)例子里:#include<iostream.h>void

swap(int

a,int

b);void

main(){int

x(5),y(10);cout<<"x="<<x<<"y="<<y<<endl;swap(x,y);cout<<"x="<<x<<"y="<<y<<endl;}void

swap(int

a,int

b){int

t;t=a;a=b;b=t;}/10/1029北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第29頁6.3.1指針作為函數(shù)參數(shù)程序中用變量x和y地址作實(shí)參,傳遞給指針a和b,如圖6.1(a)。經(jīng)過間接引用*a和*b進(jìn)行交換,實(shí)際上就是x和y進(jìn)行交換,如圖6.1(b)。

/10/1030北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第30頁

例6.7指針變量指向一個(gè)數(shù)組。用指針變量作為實(shí)參調(diào)用一個(gè)函數(shù)。在函數(shù)中指針指向數(shù)組第二個(gè)元素。觀察函數(shù)返回后,實(shí)參指針值有沒有改變。

#include<iostream>usingnamespacestd;voidMove(int*a);voidmain(){ intx[5]={10,20,30,40,50},*px=x; cout<<"調(diào)用前*px="<<*px<<endl;

Move(px); cout<<"調(diào)用后px"; if(px==x)cout<<"沒有改變,*px還是"<<*px<<endl; elsecout<<"也向前移動(dòng),*px變?yōu)?<<*px<<endl;}voidMove(int*a){ a=a+1;cout<<"函數(shù)中完成了指針移動(dòng):*a="<<*a<<endl;}

運(yùn)行結(jié)果:調(diào)用前*px=10

函數(shù)中完成了指針移動(dòng):*a=20調(diào)用后px沒有改變*px還是10

指針作為實(shí)參數(shù)指針變量作為形式參數(shù)/10/1031北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第31頁6.3.2指針指針作為函數(shù)參數(shù)假如一定要改變實(shí)參指針值,能夠用指針變量地址作實(shí)參,形式參數(shù)就應(yīng)該是指針指針。/10/1032北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第32頁

例6.8修改例6.7,使得實(shí)參指針返回后,指向新地址。#include<iostream>usingnamespacestd;voidMove(int**a); voidmain(){ intx[5]={10,20,30,40,50},*px=x; cout<<"調(diào)用前*px="<<*px<<endl; Move(&px); cout<<"調(diào)用后px"; if(px==x)cout<<"沒有改變,*px還是"<<*px<<endl; elsecout<<"也向前移動(dòng),*px變?yōu)?<<*px<<endl;}voidMove(int**a){ *a=*a+1; cout<<"函數(shù)中完成了指針移動(dòng):**a="<<**a<<endl; }運(yùn)行結(jié)果:調(diào)用前*px=10

函數(shù)中完成了指針移動(dòng):**a=20調(diào)用后px也向前移動(dòng),*px變?yōu)?0

指針地址作為實(shí)參數(shù)指針指針作為形式參數(shù)/10/1033北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第33頁6.3.3傳遞參數(shù)保護(hù):指針和常量經(jīng)過數(shù)組名地址調(diào)用,能夠改變實(shí)參數(shù)組內(nèi)容。不過,并不是全部以數(shù)組名作為實(shí)參函數(shù)調(diào)用,都需要改變數(shù)組值。比如,在調(diào)用一個(gè)求數(shù)組最大值函數(shù)時(shí),就不希望數(shù)組值發(fā)生改變。希望在函數(shù)中能夠限制對(duì)數(shù)組元素修改。使用常指針能夠到達(dá)這個(gè)目標(biāo)。/10/1034北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第34頁6.3.3傳遞參數(shù)保護(hù):指針和常量常指針是指向常量指針(PointertoConstantdata)習(xí)慣說法。就是要求指針?biāo)赶騼?nèi)容不能夠經(jīng)過指針間接引用來改變。常指針說明格式是:

const<類型名>*<指針名>;

比如:constint*ptint;指針ptint類型是(constint*),也就是指向一個(gè)恒定整型數(shù)。/10/1035北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第35頁

例6.10常指針示例。觀察以下程序運(yùn)行。

#include<iostream>usingnamespacestd;voidmain(){intia=10,ib=20;constint*ptint; ptint=&ia; //用ia地址初始化cout<<*ptint<<endl;ptint=&ib; //改變?yōu)閕b地址ib=ib+100; //ib本身依然能夠改變cout<<*ptint<<endl;//*ptint=100; //語句錯(cuò)誤:左值是常量}

運(yùn)行結(jié)果:10

120常指針申明注釋去掉會(huì)出現(xiàn)編譯錯(cuò)誤/10/1036北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第36頁6.3.3傳遞參數(shù)保護(hù):指針和常量指針常量(Pointerconstant)。指針本身內(nèi)容是個(gè)常量,不能夠改變。指針常量申明格式是:

<類型名>*const<指針名>=<初值>;比如: charch,*constptch=&ch;

數(shù)組名就是數(shù)組首地址。現(xiàn)在能夠說:數(shù)組名就是一個(gè)指針常量。

/10/1037北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第37頁

例6.11指針常量示例。指出以下程序錯(cuò)誤。#include<iostream>usingnamespacestd;voidmain()

{inta=10,b=100; int*constpa=&a; //pa是指針常量

cout<<*pa<<endl; *pa=20; //指針常量間接引用是允許

cout<<a<<endl; pa=&b;

constintc=50;// int*constpc=&c; }

錯(cuò)誤語句注釋掉后運(yùn)行結(jié)果:10

20語句有錯(cuò):常量不能當(dāng)左值語句有錯(cuò),地址類型不一樣///10/1038北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第38頁

例6.12用常指針作形參,函數(shù)printString能夠輸出數(shù)組內(nèi)容,不能夠?qū)?shù)組修改。

#include<iostream>usingnamespacestd;voidprintString(constchar*);voidmain(){charphrase[]="C++isamodernprogramminglanguage";cout<<"Thestringis:\n";printString(phrase);cout<<endl;}//main函數(shù)結(jié)束voidprintString(constchar*Ptarray){while(*Ptarray) cout<<*Ptarray++; }不使用常指針也是能夠完成打印。不過沒有保護(hù)了。數(shù)組名作實(shí)參數(shù)常指針作形式參數(shù)/10/1039北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第39頁6.3.4指針函數(shù)假如一個(gè)函數(shù)返回值是指針,則這么函數(shù)稱為指針函數(shù)。如:

int*func01(intk);

函數(shù)func01返回一個(gè)指向整型數(shù)據(jù)指針。返回指針,實(shí)際就是返回一個(gè)內(nèi)存地址。要注意:不能返回函數(shù)中局部變量地址。這么地址處于內(nèi)存堆棧區(qū),是全部函數(shù)公用區(qū)域。其中數(shù)據(jù)是不穩(wěn)定,可能因?yàn)槠渌瘮?shù)執(zhí)行而發(fā)生改變。/10/1040北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第40頁

例6.13返回不一樣地址指針函數(shù)。觀察運(yùn)行結(jié)果。#include<iostream>usingnamespacestdintva=100; //全局變量int*get_int(int*pt,intj) //指針函數(shù){intvalue=300,*pti=pt;if(j==0||j==1)returnpti;elseif(j==2)returnpti=&value;}voidmain(){int*ptint,vb=200;for(inti=0;i<3;i++) {if(i==0)ptint=get_int(&va,i); elseif(i==1)ptint=get_int(&vb,i); elseif(i==2)ptint=get_int(&va,i); cout<<"i="<<i<<"*ptint="<<*ptint<<endl; }}

運(yùn)行結(jié)果i=0*ptint=100i=1*ptint=200i=2*ptint=-858993460

返回全局變量或者vb地址返回函數(shù)局部變量地址/10/1041北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第41頁6.4指針和字符串

/10/1042北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第42頁6.4.1字符串處理兩種方式C++字符串常量是用雙引號(hào)括起字符序列,并以字符‘\0’作為結(jié)束標(biāo)志。如 "Thisisastring"。字符串常量存放在內(nèi)存某個(gè)區(qū)域,有自己固定首地址。假如將字符串常量首地址看成是指針,這種指針既是常指針,也是指針常量。/10/1043北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第43頁6.4.1字符串處理兩種方式C++處理字符串有兩種方式:數(shù)組方式和指針方式。數(shù)組方式是將字符串存入字符數(shù)組后,再進(jìn)行處理。普通能夠在申明數(shù)組時(shí)候用字符串來初始化:charstring_array[]="aniceday!";指針方式是用字符串常量來初始化一個(gè)字符指針:char*string_pt="aniceday!";/10/1044北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第44頁6.4.1字符串處理兩種方式常量不能放在等式左邊運(yùn)行時(shí)會(huì)犯錯(cuò)/10/1045北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第45頁

例6.14strcpy和strncpy比較。#include<iostream>#include<string>usingnamespacestd;voidmain(){intn;char*array1="HappyBirthdaytoYou";chararray3[15];chararray2[25];strcpy(array2,array1); cout<<"Thestringinarray1is:"<<array1<<"\nThestringinarray2is:"<<array2<<'\n';/*strcpy(array3,array1); cout<<array3<<endl;*/n=sizeof(array3);strncpy(array3,array1,n-1);//復(fù)制array1n-1個(gè)字符到array3array3[14]='\0'; //添加'\0'到array3cout<<"Thestringinarray3is:"<<array3<<endl;}

不包含提醒運(yùn)行結(jié)果HappyBirthdaytoYouHappyBirthdaytoYouHappyBirthday

復(fù)制array1到array2,沒有問題復(fù)制array1到array3,空間不夠,有運(yùn)行錯(cuò)誤按實(shí)際數(shù)組大小,復(fù)制array1到array3,沒有問題/10/1046北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第46頁6.5經(jīng)過指針訪問數(shù)組

/10/1047北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第47頁6.5經(jīng)過指針訪問數(shù)組指針和數(shù)組有天然聯(lián)絡(luò)。因?yàn)閿?shù)組名本身就是地址,也就是某種類型指針。將指針和數(shù)組名聯(lián)絡(luò)起來,訪問數(shù)組就多了一個(gè)方法。即使一維數(shù)組名和二維數(shù)組名都是地址,都能夠看作是某種指針,不過指針類型是不一樣。所以,經(jīng)過指針訪問一維數(shù)組和二維數(shù)組方法是不一樣。

/10/1048北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第48頁6.5.1經(jīng)過指針訪問一維數(shù)組要經(jīng)過指針訪問一維數(shù)組,必須首先申明一個(gè)和數(shù)組類型相同指針,而且用數(shù)組名來對(duì)指針初始化,如:

intA[10],*pa=A;然后,就能夠用各種方式訪問數(shù)組元素:數(shù)組名和下標(biāo),如A[0]、A[4];指針和下標(biāo),如pa[0]、pa[4];指針加偏移量間接引用,如*(pa+4);數(shù)組名加偏移量間接引用,如*(A+4);指針自加后間接引用,如*pa++。

/10/1049北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第49頁

例6.15求數(shù)組內(nèi)所存放字符串長度。#include<iostream>usingnamespacestd;voidmain(){charChArray[]="Thisisastring.",*ptch;inti,j,k,offset1,offset2;ptch=ChArray; //指針初始化

for(i=0;ChArray[i]!='\0';i++);cout<<"Thelengthofthestringis:"<<i<<endl;for(j=0;ptch[j]!='\0';j++);cout<<"Thelengthofthestringis:"<<j<<endl;for(offset1=0;*(ChArray+offset1)!='\0';offset1++);cout<<"Thelengthofthestringis:"<<offset1<<endl;

for(offset2=0;*(ptch+offset2)!='\0';offset2++);cout<<"Thelengthofthestringis:"<<offset2<<endl;

for(k=0;*ptch++!='\0';k++);cout<<"Thelengthofthestringis:"<<k<<endl;}

運(yùn)行結(jié)果都相同方式1:數(shù)組名和下標(biāo)方式2:指針和下標(biāo)方式3:數(shù)組名加偏移量間接引用方式4:指針加偏移量間接引用方式5:指針自加間接引用/10/1050北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第50頁

例6.16求整型數(shù)組平均值,顯示數(shù)組元素和平均值。#include<iostream>usingnamespacestd;voidmain(){intintArray[10]={8,11,23,34,45,56,65,78,86,97},*ptint;inti,num,sum;floataverage;ptint=intArray;

sum=0;num=sizeof(intArray)/sizeof(*intArray);

for(i=0;i<num;i++)sum=sum+*ptint++;average=(float)sum/num;ptint=intArray;

cout<<"數(shù)組元素是:\n";for(i=0;i<num;i++)cout<<*ptint++<<"";cout<<"\n平均值是:"<<average<<endl;}

數(shù)組元素是:8112334455665788697平均值是:50.3

指針初始化求數(shù)組元素?cái)?shù)目求平均值cout<<*ptint;指針再次初始化輸出數(shù)組元素和它們平均值/10/1051北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第51頁6.5.2經(jīng)過指針訪問二維數(shù)組二維數(shù)組能夠看成是一維數(shù)組一維數(shù)組。二維數(shù)組名即使也是地址(指針),不過卻和一維數(shù)組名有不一樣類型。對(duì)一維數(shù)組A[5],數(shù)組名A地址,就是數(shù)組第一個(gè)元素A[0]地址。指針類型是指向數(shù)組元素指針。A+1就是元素A[1]地址。/10/1052北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第52頁6.5.2經(jīng)過指針訪問二維數(shù)組對(duì)二維數(shù)組B[3][4],數(shù)組名B地址,則是其中第一個(gè)一維數(shù)組B[0]地址。指針類型是指向一維數(shù)組指針。B+1就是下一個(gè)一維數(shù)組B[1]地址。如圖6.3所表示。

/10/1053北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第53頁6.5.2經(jīng)過指針訪問二維數(shù)組在定義指向一維數(shù)組指針時(shí),還必須指出一維數(shù)組大小。申明指向一維數(shù)組指針格式以下: <類型名>(*指針變量名)[一維數(shù)組大小];

比如,和圖6.3中兩個(gè)二維數(shù)組所對(duì)應(yīng)指向一維數(shù)組指針定義以下:char(*ptchb)[4],(*ptchc)[2];ptchb=B;ptchc=C;/10/1054北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第54頁6.5.2經(jīng)過指針訪問二維數(shù)組對(duì)于指向一維數(shù)組指針,含有以下特征:

二維數(shù)組名是指向一維數(shù)組指針,而不是指向數(shù)組元素指針。

指向一維數(shù)組指針加1結(jié)果,是指向下一個(gè)一維數(shù)組指針。

指向一維數(shù)組指針間接引用結(jié)果依然是地址,即*ptchb依然是地址。只是地址類型變了。變?yōu)橐痪S數(shù)組B[0]第一個(gè)元素B[0][0]地址。

因?yàn)?ptchb是數(shù)組元素地址,**ptchb就是數(shù)組元素值。用指向一維數(shù)組指針訪問二維數(shù)組第i行第j列元素普通公式是*(*(指針名+i)+j)。

/10/1055北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第55頁

例6.17比較指向一維數(shù)組指針和指向數(shù)組元素指針。#include<iostream>usingnamespacestd;voidmain(){shortB[3][4],C[3][2];short(*ptshb)[4],(*ptshc)[2];ptshb=B;ptshc=C;cout<<"比較不一樣指向一維數(shù)組指針差異\n";cout<<"ptshb地址是:"<<ptshb<<"\n";cout<<"ptchb+1地址是:"<<ptshb+1<<"\n";cout<<"ptchc地址是:"<<ptshc<<"\n";cout<<"ptchc+1地址是:"<<ptshc+1<<"\n";

比較不一樣指向一維數(shù)組指針差異ptshb地址是:0x0012FF68ptchb+1地址是:0x0012FF70ptchc地址是:0x0012FF5Cptchc+1地址是:0x0012FF60

B第0行地址

B第1行地址

C第0行地址

C第1行地址/10/1056北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第56頁

例6.17比較指向一維數(shù)組指針和指向數(shù)組元素指針。cout<<"不一樣類型指針\n";cout<<"ptshb地址是:"<<ptshb<<endl;cout<<"*ptshb地址是:"<<*ptshb<<endl;cout<<"*ptshb+1地址是:"<<*ptshb+1<<endl;cout<<"B[0][1]地址是:"<<&B[0][1]<<endl;//cout<<"ptchb和*ptchb相等嗎?"<<(ptchb==*ptchb)<<endl; //有語法錯(cuò)誤

cout<<"*ptshb+1和&B[0][1]相等嗎?";

if(*ptshb+1==&B[0][1])cout<<"Yes"<<endl;}

不一樣類型指針ptshb地址是:0x0012FF68*ptshb地址是:0x0012FF68*ptshb+1地址是:0x0012FF6AB[0][1]地址是:0x0012FF6A*ptshb+1和&B[0][1]相等嗎?Yes

B第0行地址

B第0行第0列元素地址

B第0行第1列元素地址

B第0行第1列元素地址/10/1057北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第57頁

例6.18用單循環(huán)程序,求二維數(shù)組元素平均值。#include<iostream>usingnamespacestd;voidmain(){intdArray[3][4]={32,42,12,25,56,76,46,53,76,89,96,82},(*pt)[4];intsum,j;floataverage;sum=0;pt=dArray;

j=sizeof(dArray)/sizeof(**dArray); for(inti=0;i<j;i++) sum=sum+*(*pt+i);average=(float)sum/j;cout<<"數(shù)據(jù)平均值等于:"<<average<<endl;}

運(yùn)行結(jié)果:數(shù)據(jù)平均值等于57.0833指向一維數(shù)組指針初始化求數(shù)組元素?cái)?shù)目,**dArray就是元素dArray[0][0]數(shù)組求和求平均值輸出平均值/10/1058北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第58頁6.5.3指針數(shù)組若數(shù)組元素是某種類型指針,這么數(shù)組稱為指針數(shù)組。指針數(shù)組申明格式以下:<類型>*<數(shù)組名>[常量表示式];比如:char*member_name[10];注意和申明指向一維數(shù)組指針差異:char(*member_pointer)[10];

/10/1059北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第59頁6.5.3指針數(shù)組指向字符指針:char*member_name[]={"Merry“,"John","Hill"};指向這么指針數(shù)組指針:char**arr=member_name;或者:char**arr;arr=member_name;這么定義后,*arr就是指向字符串指針,以下語句 cout<<*arr<<endl;

將顯示數(shù)組中第一個(gè)字符串"Merry"。/10/1060北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第60頁

例6.17比較指向一維數(shù)組指針和指向數(shù)組元素指針。#include<iostream>usingnamespacestd;voidmain(){shortB[3][4],C[3][2];short(*ptshb)[4],(*ptshc)[2];ptshb=B;ptshc=C;1)cout<<*(*(ptshb+i)+j)

2)short*psh[]for(i=0;i<;i++)psh[i]=B[i];*(psh[i]+j)

33/10/1061北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第61頁

例6.19將若干字符串存入指針數(shù)組,并以NULL表示結(jié)束。將這些字符串按升序排序,輸出排序后字符串。#include<string>#include<iostream>usingnamespacestd;voidPrint(char*[]);voidString_sort(char*[]);voidmain(){char*pn[]={"George","Bill","Wendy","Abraham","Bruce",NULL};//指針數(shù)組

String_sort(pn);Print(pn);}

函數(shù)原型函數(shù)原型指針數(shù)組求平均值輸出平均值/10/1062北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第62頁

voidString_sort(char*arr[]){char**p1,**p2,*p3;p1=arr;p2=arr+1; while(*(p1+1)!=NULL) {while(*p2!=NULL) {if(strcmp(*p1,*p2)>0) {p3=*p1; *p1=*p2; *p2=p3;} p2++;}

p1++;

p2=p1+1; } }voidPrint(char*arr[]){cout<<"Sortedstringsare:"<<endl; while(*arr!=NULL) {cout<<*arr<<endl;arr++;}}

Sortedstringsare:AbrahamBillBruceGeorgeWendy

逐次取出每個(gè)指針和其余每個(gè)指針?biāo)缸址容^假如字符串*p1大于*p2交換地址重新設(shè)置p2/10/1063北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第63頁6.5.4命令行參數(shù)命令行參數(shù)是main函數(shù)參數(shù)。帶有命令行參數(shù)main函數(shù)原型是:<類型>main(intargc,char*argv[]);argc:整數(shù),存放命令行參數(shù)數(shù)目。argv[]:指針數(shù)組,存放所輸入命令行參數(shù)。其中argv[0]是所執(zhí)行程序名,argv[argc-1]是最終一個(gè)輸入?yún)?shù)字符串,argv[argc]中自動(dòng)存入NULL,表示輸入結(jié)束。/10/1064北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第64頁

例6.20顯示命令行參數(shù)程序。

#include<iostream>usingnamespacestd;voidmain(intargc,char*argv[]){cout<<"Thecommandlineargumentsare:\n";for(inti=0;i<argc;++i)cout<<argv[i]<<'';}從第0個(gè)到第argc-1個(gè)參數(shù)顯示參數(shù)原工程文件名稱為:test,編譯鏈接形成可執(zhí)行文件:test.exe輸入testhelloeveryone,輸出為:Thecommandlineargumentsare:testhelloeveryone/10/1065北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第65頁

例6.21對(duì)命令行輸入字符串進(jìn)行排序并輸出排序結(jié)果。

#include<string>#include<conio.h>#include<iostream>usingnamespacestd;voidPrint(char*[]);voidString_sort(char*[]);voidmain(intargc,char*argv[]){String_sort(argv+1);Print(argv+1);getche();}如在命令行輸入:E:\myfile\proj01\debug\proj01.exebcdabcaabbbd回車后運(yùn)行并顯示:Sortedstringsare:aababcbbdbcd從第1個(gè)參數(shù)開始排序/10/1066北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第66頁6.6指針訪問動(dòng)態(tài)內(nèi)存/10/1067北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第67頁6.6指針訪問動(dòng)態(tài)內(nèi)存

動(dòng)態(tài)內(nèi)存是在程序執(zhí)行時(shí)才能夠申請、使用和釋放內(nèi)存。也就是存放動(dòng)態(tài)數(shù)據(jù)內(nèi)存區(qū)域。存放動(dòng)態(tài)數(shù)據(jù)區(qū)域稱為“堆”,動(dòng)態(tài)內(nèi)存也稱為堆內(nèi)存。動(dòng)態(tài)內(nèi)存不能經(jīng)過變量名來使用,而只能經(jīng)過指針來使用。/10/1068北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第68頁6.6.1動(dòng)態(tài)內(nèi)存申請和釋放C++中經(jīng)過運(yùn)算符new申請動(dòng)態(tài)內(nèi)存,運(yùn)算符delete釋放動(dòng)態(tài)內(nèi)存。動(dòng)態(tài)內(nèi)存申請運(yùn)算符new使用格式:

new<類型名>(初值)運(yùn)算結(jié)果:假如申請成功,返回指定類型內(nèi)存地址;假如申請失敗,返回NULL指針。動(dòng)態(tài)內(nèi)存使用完成后,要用delete運(yùn)算來釋放。delete運(yùn)算符使用格式:

delete<指針名>;

/10/1069北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第69頁6.6.2動(dòng)態(tài)數(shù)組空間申請和釋放申請動(dòng)態(tài)一維數(shù)組時(shí),要在new表示式中加上申請數(shù)組大小:new<類型名>[常量表示式];注意:在動(dòng)態(tài)申請數(shù)組空間時(shí),不能夠?qū)?shù)組進(jìn)行初始化。也能夠申請二維數(shù)組空間:int(*pi_marray)[4];pi_marray=newint[3][4];釋放動(dòng)態(tài)數(shù)組空間都用相同表示式:delete[]<指針名>;

/10/1070北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第70頁6.6.3內(nèi)存泄漏和指針懸掛

內(nèi)存泄漏是指動(dòng)態(tài)申請內(nèi)存空間,沒有正常釋放,不過也不能繼續(xù)使用情況。如:char*ch1;ch1=newchar('A');char*ch2=newchar;ch1=ch2;原來為ch1所申請存放字符A空間就不可能再使用了,產(chǎn)生了內(nèi)存泄漏。/10/1071北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第71頁6.6.3內(nèi)存泄漏和指針懸掛讓指針指向一個(gè)已經(jīng)釋放空間,即所謂指針懸掛(Dangling)。如:char*ch1,*ch2;ch1=newchar;ch2=ch1;*ch2='B';deletech1;指針ch2就是指向了一個(gè)已經(jīng)釋放地址空間,形成指針懸掛。假如還要用deletech2;語句來釋放ch2所指向空間,就會(huì)出現(xiàn)運(yùn)行錯(cuò)誤。/10/1072北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第72頁6.7引用概念/10/1073北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第73頁6.7引用概念引用(Reference)是C++中新引入概念,也是C語言中不存在數(shù)據(jù)類型。

引用是變量或者其它編程實(shí)體(如對(duì)象)別名。所以,引用是不能夠單獨(dú)定義。如圖6.4(a)所表示,變量A在內(nèi)存中有自己地址,而A引用B實(shí)際上就是變量A,只是A另外一個(gè)名字。

/10/1074北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第74頁6.7.1引用申明和使用引用是經(jīng)過運(yùn)算符&來定義,定義格式以下:

<類型名>&引用名=變量名;其中變量名必須是已經(jīng)定義,而且和引用類型必須相同。比如:

intsomeInt; int&refInt=someInt;必須注意:引用必須在申明時(shí)候就完成初始化,不能夠先申明引用,然后再用另一個(gè)語句對(duì)它初始化。

/10/1075北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第75頁6.7.1引用申明和使用引用有以下特點(diǎn):引用不能獨(dú)立存在,它只是其它變量別名;引用必須在申明同時(shí)就初始化;引用一旦定義,引用關(guān)系就不能夠更改,即B若是A引用,就不可能是其它變量引用;引用類型就是相關(guān)變量類型,引用使用和變量使用相同。/10/1076北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第76頁

例6.22引用使用。觀察以下程序結(jié)果。

#include<iostream>usingnamespacestd;voidmain(){intintA=10;int&refA=intA;cout<<"引用值和相關(guān)變量值相同:refA="<<refA<<endl;refA=5;cout<<"引用改變,則相關(guān)變量也改變:intA="<<intA<<endl;cout<<"引用地址和相關(guān)變量地址相同:intA地址="<<&intA<<endl;cout<<"引用地址和相關(guān)變量地址相同:refA地址="<<&refA<<endl;}引用值和相關(guān)變量值相同:refA=10引用改變,則相關(guān)變量也改變:intA=5引用地址和相關(guān)變量地址相同:intA地址=0x0012FF7C引用地址和相關(guān)變量地址相同:refA地址=0x0012FF7C/10/1077北京科技大學(xué)計(jì)算機(jī)系C++大學(xué)基礎(chǔ)教程第六章第77頁6.7.1常引用假如不希望經(jīng)過引用來改變相關(guān)變量值,則能夠定義常引用。常引用定義格式:

const<類型名>&引用名=變量名;比如:intsomeInt=10;constint&const

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論