《C語(yǔ)言程序設(shè)計(jì)教程》課件--第8章_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第8章_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第8章_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第8章_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第8章_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、變量的兩個(gè)物理意義變量的兩個(gè)物理意義 變量的內(nèi)容變量的內(nèi)容變量的地址變量的地址538532021p=&c82021200020212000*p = &a;5a ab bp1p1p2p2p p6 68 8a=6,b=8a=6,b=8max=8,min=6max=8,min=6【例【例8.18.1】輸入】輸入a a、b b兩個(gè)整數(shù)兩個(gè)整數(shù), ,使用指針變量按大小次序輸出使用指針變量按大小次序輸出這兩個(gè)整數(shù)這兩個(gè)整數(shù). . a a、* *p1p1b b、* *p2p2p1p1p2p2t t6 68 8a=8,b=6a=8,b=6max=8,min=6max=8,min=66 68 86 6P1=40

2、4,*p1=10P2=410,*p2=4030201040503020104050 指向同一數(shù)組的兩個(gè)指針能夠履行關(guān)系指向同一數(shù)組的兩個(gè)指針能夠履行關(guān)系運(yùn)算運(yùn)算,表明它們所指向元素的彼此位置關(guān)系表明它們所指向元素的彼此位置關(guān)系 .似似:p2 p1、p2 = p1. 指針與一個(gè)整型信息履行對(duì)比是沒(méi)有意指針與一個(gè)整型信息履行對(duì)比是沒(méi)有意義的義的 . 差別類(lèi)型指針變量之間對(duì)比黑白法的差別類(lèi)型指針變量之間對(duì)比黑白法的. NULL能夠與任何類(lèi)型指針履行能夠與任何類(lèi)型指針履行=、!=的關(guān)系運(yùn)算的關(guān)系運(yùn)算,用于推斷指針是否為空指針用于推斷指針是否為空指針 .a0a0a9a9a0a0a9a9a0a0a9a91

3、2345678910 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10a0a0a9a910a0a0a9a9a1a1 . . . . . . . . . . . .1 12 23 34 45 56 67 78 89 91010 輸入a數(shù)組 for (p=a; pa+4; p+) pp=p for (q=p+1; q*q F pp=q T pp!=p F *pp*p 輸出a數(shù)組圖8.9 挑選法排序N-S圖0 0101020201 1111121212 2121222223 313132323aa0a0a1a1a2a2aa+1a+20 0101020201 1111

4、121212 2121222223 313132323a0數(shù)組數(shù)組a1數(shù)組數(shù)組a2數(shù)組數(shù)組0 0101020201 1111121212 2121222223 313132323a0a0a1a1a2a2a0 0101020201 1111121212 2121222223 313132323a0 0101020201 1111121212 2121222223 313132323alplp+1lp+2 0 1 2 3 10 11 12 13 20 21 22 230 0101020201 1111121212 2121222223 313132323alplplplp 0 1 2 3 10 1

5、1 12 13 20 21 22 23 字符串的兩種示意方式字符串的兩種示意方式: 字符數(shù)組示意方式字符數(shù)組示意方式,字符串存放在一維數(shù)組中字符串存放在一維數(shù)組中,引引用時(shí)用數(shù)組名用時(shí)用數(shù)組名. 字符指針變量示意方式字符指針變量示意方式,字符指針變量存放字符字符指針變量存放字符串的首地址串的首地址,引用時(shí)用指針變量名引用時(shí)用指針變量名.Good morning!Good night! 將一個(gè)字符串賦給一個(gè)字符數(shù)組只能使用將一個(gè)字符串賦給一個(gè)字符數(shù)組只能使用strcpy函數(shù)函數(shù) 將字符串常量的首地址賦給指針變量將字符串常量的首地址賦給指針變量,可使用賦值運(yùn)可使用賦值運(yùn)算符算符“=” How ar

6、e you ?Fine,thanks. 使用字符串輸入輸出函數(shù)使用字符串輸入輸出函數(shù)getsgets和和putsputs; 在在scanfscanf和和printfprintf函數(shù)中使用函數(shù)中使用 %s %s標(biāo)準(zhǔn)實(shí)現(xiàn)標(biāo)準(zhǔn)實(shí)現(xiàn). . 輸入字符串時(shí)輸入字符串時(shí), ,函數(shù)指標(biāo)函數(shù)指標(biāo): :數(shù)組名、存有數(shù)組名的指數(shù)組名、存有數(shù)組名的指針變量;針變量; 輸出字符串時(shí)輸出字符串時(shí), ,函數(shù)指標(biāo)函數(shù)指標(biāo): :數(shù)組名、存有字符串首地?cái)?shù)組名、存有字符串首地址的指針變量址的指針變量. . I love China! I love China! .整型值整型值整型變量整型變量整型變量地址整型變量地址一級(jí)指針變量一級(jí)

7、指針變量一級(jí)指針變量地址一級(jí)指針變量地址二級(jí)指針變量二級(jí)指針變量a的內(nèi)容的內(nèi)容a&ap&ppppppppp 7597775 75 因?yàn)橹赶蚨S數(shù)組的指針?lè)譃樾兄羔樅鸵驗(yàn)橹赶蚨S數(shù)組的指針?lè)譃樾兄羔樅驮刂羔樤刂羔? ,所以他們做為函數(shù)指標(biāo)的形式也所以他們做為函數(shù)指標(biāo)的形式也差別差別. . 指向二維數(shù)組元素的指針作函數(shù)指標(biāo)指向二維數(shù)組元素的指針作函數(shù)指標(biāo)時(shí)時(shí), ,是操縱二維數(shù)組元素按行接連存儲(chǔ)的的是操縱二維數(shù)組元素按行接連存儲(chǔ)的的特點(diǎn)特點(diǎn), ,會(huì)見(jiàn)數(shù)組的每一個(gè)元素會(huì)見(jiàn)數(shù)組的每一個(gè)元素. .被調(diào)函數(shù)的形被調(diào)函數(shù)的形參必須定義為指向二維數(shù)組元素的指針變量參必須定義為指向二維數(shù)組元素的指針變量. .

8、 要調(diào)用帶指標(biāo)的主函數(shù)必須在操縱系統(tǒng)環(huán)境下要調(diào)用帶指標(biāo)的主函數(shù)必須在操縱系統(tǒng)環(huán)境下履行履行. .假定假定C C語(yǔ)言源程序文件語(yǔ)言源程序文件file1.c,file1.c,通過(guò)編譯、通過(guò)編譯、毗鄰生成一個(gè)可履行文件毗鄰生成一個(gè)可履行文件file1.exe.file1.exe.在在DOSDOS系統(tǒng)提系統(tǒng)提示符后鍵入可履行文件名示符后鍵入可履行文件名file1,file1,即可履行該程序即可履行該程序 . .C:file1 one two three onetwothree 注重注重: : 號(hào)令行指標(biāo)所傳送的信息全部根基上字號(hào)令行指標(biāo)所傳送的信息全部根基上字符串符串. .即便傳送的是數(shù)值即便傳送的是

9、數(shù)值, ,也是按字符串方式傳送也是按字符串方式傳送給主函數(shù)給主函數(shù). .程序中使用這些指標(biāo)時(shí)程序中使用這些指標(biāo)時(shí), ,還需要將數(shù)字還需要將數(shù)字字符串變形成數(shù)值型信息字符串變形成數(shù)值型信息.C.C語(yǔ)言規(guī)格庫(kù)函數(shù)提供語(yǔ)言規(guī)格庫(kù)函數(shù)提供了部分相關(guān)的信息類(lèi)型變形函數(shù)了部分相關(guān)的信息類(lèi)型變形函數(shù) . . 似果一個(gè)函數(shù)的返回值是指針?biāo)乒粋€(gè)函數(shù)的返回值是指針, ,那么稱(chēng)此函數(shù)那么稱(chēng)此函數(shù)為指針型函數(shù)為指針型函數(shù). . 在在C語(yǔ)言中語(yǔ)言中,函數(shù)名具有與數(shù)組名類(lèi)似的特函數(shù)名具有與數(shù)組名類(lèi)似的特性性,數(shù)組名代表數(shù)組的首地址數(shù)組名代表數(shù)組的首地址,函數(shù)名代表函數(shù)函數(shù)名代表函數(shù)的起始地址(即該函數(shù)的程序代碼段在內(nèi)存

10、中的起始地址(即該函數(shù)的程序代碼段在內(nèi)存中所占用的存儲(chǔ)空間的首地址所占用的存儲(chǔ)空間的首地址,也稱(chēng)函數(shù)入口)也稱(chēng)函數(shù)入口).所以也能夠把函數(shù)名賦給一個(gè)函數(shù)指針變量所以也能夠把函數(shù)名賦給一個(gè)函數(shù)指針變量,使使其成為指向該函數(shù)的指針變量其成為指向該函數(shù)的指針變量.函數(shù)名那么能夠函數(shù)名那么能夠算作是函數(shù)指針常量算作是函數(shù)指針常量. 函數(shù)指針與變量指針的共同之處是都能夠做函數(shù)指針與變量指針的共同之處是都能夠做間接會(huì)見(jiàn)間接會(huì)見(jiàn). .變量指針指向內(nèi)存的信息存儲(chǔ)區(qū)變量指針指向內(nèi)存的信息存儲(chǔ)區(qū), ,通過(guò)通過(guò)間接存取運(yùn)算會(huì)見(jiàn)意圖變量;函數(shù)指針指向內(nèi)存間接存取運(yùn)算會(huì)見(jiàn)意圖變量;函數(shù)指針指向內(nèi)存的程序代碼存儲(chǔ)區(qū)的程序

11、代碼存儲(chǔ)區(qū), ,通過(guò)間接存取運(yùn)算使程序流程通過(guò)間接存取運(yùn)算使程序流程轉(zhuǎn)移到指針?biāo)赶虻暮瘮?shù)入口轉(zhuǎn)移到指針?biāo)赶虻暮瘮?shù)入口, ,取出函數(shù)的機(jī)器指取出函數(shù)的機(jī)器指令同時(shí)履行函數(shù)令同時(shí)履行函數(shù), ,完成函數(shù)的調(diào)用完成函數(shù)的調(diào)用. . main( )main( )int max( ),a,b,c; int max( ),a,b,c; * *表明被調(diào)用的意圖函數(shù)表明被調(diào)用的意圖函數(shù)max max * * int ( int (* *p)( ); p)( ); * *定義定義p p為指向整型函數(shù)的指針變量為指向整型函數(shù)的指針變量* * p = max; p = max; * * 用指針變量存儲(chǔ)函數(shù)入口地址

12、用指針變量存儲(chǔ)函數(shù)入口地址 * * scanf(“%d%d”,&a,&b); scanf(“%d%d”,&a,&b); c=( c=(* *p)(a,b); p)(a,b); * * 用指針變量調(diào)用函數(shù)用指針變量調(diào)用函數(shù) * * printf(“max=%d”,c); printf(“max=%d”,c); max(int x,int y) max(int x,int y) * * 函數(shù)名是函數(shù)的入口地址函數(shù)名是函數(shù)的入口地址 * *if(xy) return(x);if(xy) return(x); else return(y); else return(y); 將函數(shù)指針做為指標(biāo)將函數(shù)指針做為指標(biāo), ,可在主調(diào)函數(shù)和被調(diào)函可在主調(diào)函數(shù)和被調(diào)函數(shù)之間將第三個(gè)函數(shù)做為指標(biāo)傳遞數(shù)之間將第三個(gè)函數(shù)做為指標(biāo)傳遞, ,實(shí)此刻被函數(shù)實(shí)此刻被函數(shù)中調(diào)用差別函數(shù)的意圖中調(diào)用差別函數(shù)的意圖, ,使被調(diào)函數(shù)成為通用函數(shù)使被調(diào)函數(shù)成為通用函數(shù). . 函數(shù)指針作函數(shù)指標(biāo)時(shí)函數(shù)指針作函數(shù)指標(biāo)時(shí), ,形參必然要定義為指形參必然要定義為指向函數(shù)的指針變量向函數(shù)的指針變量, ,實(shí)參那么能夠是函數(shù)名或指向?qū)崊⒛敲茨軌蚴呛瘮?shù)名或指向函數(shù)的指針變量函數(shù)的指針變量. . Y f(x) (x2,f(x2) 0 x1 x x0 x2 X (x1,f(x1) 圖8.21 弦截法求方程的根示意圖)1()2()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論