C++ 第十二講_指針(三)_第1頁(yè)
C++ 第十二講_指針(三)_第2頁(yè)
C++ 第十二講_指針(三)_第3頁(yè)
C++ 第十二講_指針(三)_第4頁(yè)
C++ 第十二講_指針(三)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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、 1湖南長(zhǎng)沙湖南長(zhǎng)沙 2 3q 5.6 返回指針值的函數(shù)q 5.7 指針數(shù)組q 5.8 指向指針的指針變量q 5.9 主函數(shù)main的參數(shù)q 5.10 小結(jié)與程序設(shè)計(jì)示例 4C規(guī)定,函數(shù)類型不僅可以是簡(jiǎn)單數(shù)據(jù)類型,還可以是指針類型,即允許函數(shù)的返回值是一個(gè)指針值。稱返回指針值的函數(shù)為指針型函數(shù)。指針型函數(shù)定義的首部形式返回指針值的函數(shù)返回指針值的函數(shù)指針型函數(shù)指針型函數(shù) 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 *函數(shù)名函數(shù)名( )或 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 *函數(shù)名函數(shù)名(形式參數(shù)及類型說(shuō)明表形式參數(shù)及類型說(shuō)明表)示例int *max(int x,int y)二元函數(shù)max的返回值是基類型為int型的指針 5示例

2、int (*max)(int x,int y);/* 指向int型二元函數(shù)的指針,指針變量名為max */ int *max(int x,int y);/* max是個(gè)函數(shù),函數(shù)類型是以int為基類型的指針 */函數(shù)指針與指針型函數(shù)函數(shù)指針與指針型函數(shù) 6例25 輸出兩異值整數(shù)變量的較大值和較小值的程序。/* program largeorsmall.cpp */#include int *max(int x,int y) return (xy)?&x:&y);int *min(int x,int y) return (xy)?&x:&y);指針型函數(shù)定義示例指

3、針型函數(shù)定義示例 7void main() int i,j,*pm; do coutij; while (i=j); pm=max(i,j); coutThe larger value is “*pmendl; pm=min(i,j); coutThe smaller value is “*pmendl;指針型函數(shù)定義示例指針型函數(shù)定義示例 Enter two different integers: 200 200Enter two different integers: 200 500The larger value is 500.The smaller value is 200. 8mai

4、n主函數(shù)的另一編碼形式void main() int i,j; do coutij; while (i=j); coutThe larger value is “*max(i,j)endl; coutThe smaller value is “*min(i,j)endl;指針型函數(shù)定義示例指針型函數(shù)定義示例 Enter two different integers: 200 500The larger value is 500.The smaller value is 200. 9每個(gè)元素都是指針的數(shù)組,稱作指針型數(shù)組,或稱指針數(shù)組。指針數(shù)組說(shuō)明語(yǔ)句的一般形式指針數(shù)組和指針數(shù)組變量說(shuō)明指針數(shù)組

5、和指針數(shù)組變量說(shuō)明 例26 指針數(shù)組變量說(shuō)明示例int *a10;int *b45;char *s6; 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 * 指針數(shù)組名指針數(shù)組名整型常量表達(dá)式整型常量表達(dá)式; 10指針數(shù)組變量在說(shuō)明時(shí)亦可初始化,但所賦予的應(yīng)當(dāng)是一批指針地址。這批指針?lè)謩e指向同一類型的各個(gè)變量利用指針數(shù)組初始化,可用來(lái)構(gòu)造字符串?dāng)?shù)組。字符串?dāng)?shù)組中的每一個(gè)元素都是一個(gè)字符串常量,這些字符串常量的長(zhǎng)度可以互不相等對(duì)于若干個(gè)長(zhǎng)度不等的字符串常量,可以利用指針數(shù)組把它們聯(lián)系在一起,令每一數(shù)組元素即字符指針?lè)謩e指向?qū)?yīng)的字符串指針數(shù)組初始化指針數(shù)組初始化 11示例char *suit4= Spades, Heart

6、s, Diamonds, Clubs;指針數(shù)組初始化示例指針數(shù)組初始化示例 Spes 0Herts 0Dimonds0suit0suit1 suit2 suit3 Claa a u bs0d 12例27 char *days= NULL, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ;指針數(shù)組初始化示例指針數(shù)組初始化示例 13指針數(shù)組初始化示例指針數(shù)組初始化示例 days0 days1 days2 days3 days4 days5 days6 days7 0M on T ue W ed T hu F ri S

7、at S un day 0sd ay0nes d ay 0sd ay0da y 0ur day 0da y0r 14例28 根據(jù)已給整數(shù)值i(1i7),輸出對(duì)應(yīng)的英文星期名,對(duì)于其他的i值,輸出出錯(cuò)信息。/* program datedemo.cpp */#include char *name(char *pd,int i) return (i=1&i=7)?*(pd+i):*pd);main() int i; char *ps; static char *days= NULL, Monday, Tuesday, Wednesday,指針型函數(shù)與指針數(shù)組使用示例指針型函數(shù)與指針數(shù)組使用

8、示例 15 Thursday, Friday, Saturday, Sunday ; couti; ps=name(days,i); if (ps=NULL) coutIllegal day.“endl; else coutDay no:”i%“psThursday 16main主函數(shù)的另一編碼形式main() int i; char *ps; static char *days= Illegal day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ; couti; ps=name(days,i); coutD

9、ay no:”i“psendl;指針型函數(shù)與指針數(shù)組使用示例指針型函數(shù)與指針數(shù)組使用示例 17指針型數(shù)組(指針數(shù)組)和指向數(shù)組的指針(數(shù)組指針)通常與二維數(shù)組相結(jié)合使用。例29 int a34= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12 ;int *q=a; /* q是個(gè)整型指針變量 */int (*qa)34=a;/* qa是指向二維數(shù)組的指針變量 */int (*pa)4=a; /* pa是指向一維數(shù)組的指針變量 */int *p3=a0,a1,a2; /* p是具有3個(gè)指針的指針數(shù)組 */指針數(shù)組和數(shù)組指針使用示例指針數(shù)組和數(shù)組指針使用示例 18int a34

10、= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12 ;指針數(shù)組和數(shù)組指針使用示例指針數(shù)組和數(shù)組指針使用示例 121110987654321aint *q=a;int (*qa)34=a;121110987654321aq121110987654321aqa 19指針數(shù)組和數(shù)組指針使用示例指針數(shù)組和數(shù)組指針使用示例 int (*pa)4=a;int *p3=a0,a1,a2;121110987654321apa121110987654321ap0p1p2int a34= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12 ;121110987654321a

11、 20一個(gè)指針變量存放的是另一指針變量的地址,而后者又指向某通常的變量,則建立了指向指針的指針二級(jí)指針。二級(jí)指針涉及二級(jí)間接引用。二級(jí)指針變量說(shuō)明語(yǔ)句的一般形式指向指針的指針指向指針的指針二級(jí)指針二級(jí)指針 示例 int *ppi; 類型說(shuō)明符類型說(shuō)明符 *指針變量名指針變量名;指針變量名指針變量說(shuō)明符指針的指針變量說(shuō)明符該指針變量所指向變量的數(shù)據(jù)類型 21int i=10,*pi=&i,*ppi=π 二級(jí)指針使用示例二級(jí)指針使用示例 間接引用 二級(jí)間接引用 ppipi10ij=i+*pi+*ppi;10 10 10 22例30 指向指針的指針變量說(shuō)明和使用示例/* pro

12、gram multiptr.cpp */#include main() int i=10,j; int *pi,*ppi; pi=&i; ppi=π couti=“iendl; j=i+*pi+*ppi; coutj=“i”+”*pi“+”*ppi“=“jendl;二級(jí)指針使用示例二級(jí)指針使用示例 i=10j=10+10+10=30ppipi10i 23例31 使用指針數(shù)組與二級(jí)指針示例/* program ptrsdemo.cpp */#include main() char *s= Ada, ALGOL, BASIC, C, COBOL, FORTRAN, Pasca

13、l, ;使用指針數(shù)組與二級(jí)指針示例使用指針數(shù)組與二級(jí)指針示例 24 char *pps; pps=s; do cout*ppsendl);/cout*ppsendl; pps+; while (*pps!=0);使用指針數(shù)組與二級(jí)指針示例使用指針數(shù)組與二級(jí)指針示例 AdaALGOLBASICCCOBOLFORTRANPascal 25main主函數(shù)的另一編碼形式main() char *s=Ada,ALGOL,BASIC,C, COBOL,FORTRAN,Pascal; char *pps,*qps; pps=s; qps=s+7; for (;ppsqps;pps+) cout*ppsend

14、l;使用指針數(shù)組與二級(jí)指針示例使用指針數(shù)組與二級(jí)指針示例 AdaALGOLBASICCCOBOLFORTRANPascal 26代碼說(shuō)明 pps=s; qps=s+7; for (;ppsqps;pps+) cout*ppsendl;使用指針數(shù)組與二級(jí)指針示例使用指針數(shù)組與二級(jí)指針示例 s0 Ada0s1 ALGOL0s2 BAS IC0s3 C0s4 COB OL0s5 FOR TRAN0s6 Pas cal0ppsqps 27操作系統(tǒng)(如DOS、UNIX)命令行命令行參數(shù)命令行參數(shù) 主函數(shù)main的首部形式void main(int argc,char *argv)void (int ar

15、gc,char *argv) 可執(zhí)行文件名可執(zhí)行文件名 參數(shù)參數(shù)1 參數(shù)參數(shù)2 . 參數(shù)參數(shù)n存儲(chǔ)實(shí)際命令行參數(shù)的字符指針數(shù)組或二級(jí)指針命令行參數(shù)個(gè)數(shù) (n+1) 28例32 指針數(shù)組的應(yīng)用示例命令行參數(shù)/* program echo.cpp */#include main(int argc,char *argv) int i; for (i=1;iargc;i+) coutargviendl;使用命令行參數(shù)示例使用命令行參數(shù)示例 29操作系統(tǒng)命令行使用命令行參數(shù)示例使用命令行參數(shù)示例 echo Ada ALGOL BASIC C COBOL FORTRAN PascalAdaALGOLBAS

16、ICCCOBOLFORTRANPascal輸出結(jié)果 30例33 承例32,使用多級(jí)指針實(shí)現(xiàn)同樣功能/* program echo1.cpp */#include main(int argc,char *argv) while (argc-1) cout*+argv;使用命令行參數(shù)使用命令行參數(shù) 31例34 編寫有參數(shù)main函數(shù)的程序,使在操作系統(tǒng)狀態(tài)下鍵入如下命令行even 15將獲得下述輸出結(jié)果使用命令行參數(shù)使用命令行參數(shù) 分析 第二個(gè)參數(shù)應(yīng)視作字符串15??墒褂脴?biāo)準(zhǔn)庫(kù)函數(shù)atoi (包含在頭標(biāo)文件stdlib.h中)將字符串轉(zhuǎn)換成對(duì)應(yīng)的整數(shù)。 2 4 6 8 10 12 14 16 18

17、 20 22 24 26 28 30 32/* program even.cpp */#include #include #include void main(int argc,char *argv) int i=1,n; n=atoi(*+argv); /* 取第二個(gè)參數(shù)字符串并轉(zhuǎn)換成相應(yīng)整數(shù)賦予n */ while (n-) coutsetw(3)i+*2; coutendl;使用命令行參數(shù)使用命令行參數(shù) n=atoi(*+argv);也可改成 n=atoi(argv1); 33指針是以地址為值的一種特殊變量指針變量需在使用前說(shuō)明可對(duì)指針變量初始化指針初始化賦值或?yàn)?,或?yàn)镹ULL,或?yàn)橐?/p>

18、個(gè)地址指針運(yùn)算使用兩個(gè)重要運(yùn)算符:“&”和“*” 取地址運(yùn)算符“&”返回其操作數(shù)的地址 取內(nèi)容運(yùn)算符“*”返回其操作數(shù)所指向的對(duì)象的值指針?biāo)阈g(shù)運(yùn)算可使用“+”、“-”、“+”、“+=”、“-”、“-=”等運(yùn)算符指針關(guān)系運(yùn)算可使用“=”、“!=”、“”、“”、“=”等運(yùn)算符數(shù)組與指針關(guān)系密切數(shù)組名是一個(gè)指針常量,它總是指向不變的內(nèi)存單元小結(jié)小結(jié) 34有關(guān)指針的各種說(shuō)明及其含義小結(jié)小結(jié) int *pint *p()int (*p)()int *pint (*p)int *pp為指向整型數(shù)據(jù)的指針變量p為返回指針值的函數(shù),即指針型函數(shù),該指針指向一個(gè)整型數(shù)據(jù)p為指向函數(shù)的指針變量,該函數(shù)的返回值是一個(gè)整型數(shù)據(jù)p為指針數(shù)組,由一批指向整型數(shù)據(jù)的指針元素構(gòu)成p為指向數(shù)組的指針變量,該指針指向一個(gè)由若干整型元素構(gòu)成的數(shù)組p為指向指針的指針變量,第二級(jí)指針指向一個(gè)整型數(shù)據(jù) 35問(wèn)題 利用說(shuō)明函數(shù)的指針變量,使函數(shù)名可作為參數(shù)傳遞,求下述一批定積分的近似值:程序設(shè)計(jì)示例程序設(shè)計(jì)示例 分析題意 需編

溫馨提示

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