指針的應(yīng)用實(shí)例_第1頁(yè)
指針的應(yīng)用實(shí)例_第2頁(yè)
指針的應(yīng)用實(shí)例_第3頁(yè)
指針的應(yīng)用實(shí)例_第4頁(yè)
指針的應(yīng)用實(shí)例_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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、指針函數(shù)與函數(shù)指針分析,1.指針作為函數(shù)的參數(shù)函數(shù)的參數(shù)傳遞可以采用地址傳遞。所以指針可作為函數(shù)參數(shù)。當(dāng)指針作為函數(shù)的形參時(shí),實(shí)參傳遞的是地址,在函數(shù)中通過地址訪問實(shí)參,所以,在函數(shù)中通過地址對(duì)實(shí)參的修改影響到實(shí)參的值?!纠?.11】輸入的兩個(gè)整數(shù)按大小順序輸出。#includevoidswap(intx,inty)inttemp;temp=x;x=y;y=temp;,voidmain()inta,b;scanf(%d,%d,運(yùn)行結(jié)果:1,21,2可見:此程序沒能夠達(dá)到題目要求。雖然ab,并且進(jìn)入swap()函數(shù)進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)了x和y的交換,返回到主函數(shù)后,x和y都被釋放掉了。,*輸入的兩

2、個(gè)整數(shù)按大小順序輸出。(運(yùn)用指針)#includeswap(int*p1,int*p2)inttemp;temp=*p1;*p1=*p2;*p2=temp;voidmain()inta,b;int*p1,*p2;scanf(%d,%d,運(yùn)行結(jié)果:1,22,1,2.字符指針1.字符串的表示形式在C語言中,可以用兩種方法實(shí)現(xiàn)對(duì)字符串的操作。(1)用字符數(shù)組處理字符串?!纠?.15】voidmain()charstr=“Ilovechina!”;printf(“%s”,str);或:voidmain()charstr=”Ilovechina!”;inti;for(i=0;*(str+i)!=0;i+

3、)printf(“%c”,*(str+i);運(yùn)行結(jié)果:Ilovechina!,3.用字符指針實(shí)現(xiàn)將字符串的首地址賦給指針,用字符指針變量來處理字符串?!纠?.16】用指針變量逐個(gè)輸出數(shù)組中的每個(gè)字符。voidmain()charstr=”Ilovechina!”;char*p;inti;p=str;for(i=0;*(p+i)!=0;i+)printf(“%c”,*(p+i);,或用指針變量整體輸出字符數(shù)組的值。voidmain()charstr=”Ilovechina!”;char*p;inti;p=str;printf(“%s”,p);也可以在定義字符指針的同時(shí)初始化。voidmain()

4、char*str=“Ilovechina!”;printf(“%sn”,str);,4.字符指針作函數(shù)參數(shù)字符數(shù)組名可作函數(shù)參數(shù),字符指針變量也可作函數(shù)參數(shù)?!纠?.18】用函數(shù)調(diào)用實(shí)現(xiàn)字符串的連接。strcat12(char*p1,char*p2)while(*p1!=0)/*使p1指向第一個(gè)字符串末尾*/p1+;while(*p2!=0)/*將p2連接到第一個(gè)字符串的當(dāng)前位置*/*p1=*p2;p1+;p2+;*p1=0;voidmain()charstr140=“PeoplesRepublicof”;charstr2=“China”;strcat12(str1,str2);printf(

5、“%sn”,str1);運(yùn)行結(jié)果:PeoplesRepublicofChina,5.字符指針變量與字符數(shù)組字符數(shù)組和字符指針變量都能實(shí)現(xiàn)字符串的存儲(chǔ)與運(yùn)算,但兩者之間還是有區(qū)別的,主要包括以下幾點(diǎn):(1)字符數(shù)組由若干元素組成,每個(gè)元素存放一個(gè)字符;字符指針變量存放的是字符串的首地址。(2)賦值方式不同:不能用賦值語句給字符數(shù)組賦值。charstr14;str=“Ilovechina!”這是錯(cuò)誤的。字符指針變量可以采用下面的形式賦值:char*p;p=“china!”這是正確的。但要注意賦給指針變量p的不是字符串,而是字符串的首地址。(3)定義一個(gè)數(shù)組,在編譯時(shí)分配存放n個(gè)元素的存儲(chǔ)空間;定義

6、指針變量只分配存放一個(gè)地址的空間。(4)指針變量的值是可以改變的,字符數(shù)組名則不行。,【例9.19】字符指針變化輸出。voidmain()char*a=“IloveChina!”;a=a+7;/*a已指向了字符C*/printf(“%s”,a);運(yùn)行結(jié)果如下:China!/*當(dāng)前地址直到字符串結(jié)束為止*/字符數(shù)組不能采用如下形式:charstr=“IloveChina!”;str=str+7;/*該語句是錯(cuò)誤的*/printf(“%s”,str);數(shù)組名是一個(gè)常量其值是不能改變的。(5)可以用指針變量指向一個(gè)格式字符串,用它代替printf中的格式串。char*format=“a=%d,b=%

7、fn”;printf(format,a,b),6.函數(shù)指針函數(shù)名就代表函數(shù)的入口地址。函數(shù)指針:函數(shù)的入口地址稱為函數(shù)指針。即指向函數(shù)的指針變量為函數(shù)指針。函數(shù)指針定義格式:(*指針變量名)();其中:“存儲(chǔ)類型”是函數(shù)指針本身的存儲(chǔ)類型;“數(shù)據(jù)類型”是指函數(shù)返回值的數(shù)據(jù)類型;例如:int(*p)();定義一個(gè)指向整形函數(shù)的指針變量p。,【例6.1】求a和b中的最大者。程序如下:voidmain()intmax();int(*p)();inta,b,c;p=max;/*函數(shù)max入口地址賦給p*/scanf(“%d,%d”,6.1.1函數(shù)指針作函數(shù)參數(shù)函數(shù)的參數(shù)不僅可以是整型量、字符型量,同樣

8、指向函數(shù)的指針也可以作為函數(shù)的參數(shù)。例10.26函數(shù)sin、cos、tan分別用于計(jì)算浮點(diǎn)數(shù)的正弦、余弦、正切值,函數(shù)execute則是可完成這些計(jì)算的通用函數(shù)。源程序#includemain()doubleexecute();double(*function3)();doublex,y;inti,n;function0=sin;function1=cos;function2=tan;printf(輸入x:);scanf(%lf,scanf(%d,程序運(yùn)行結(jié)果:輸入x:0.50-計(jì)算x的正弦,1-計(jì)算x的余弦、2-計(jì)算x的正切值:請(qǐng)選擇輸入(0-2):2計(jì)算結(jié)果為:0.54630,6.2指針函

9、數(shù)指針函數(shù):返回指針值的函數(shù)稱為指針函數(shù)。指針函數(shù)定義形式:(參數(shù)表);例如:int*f1(x,y);其中f1為函數(shù)名,調(diào)用f1后得到一個(gè)指向整型數(shù)據(jù)的指針(地址)?!纠?.2】有若干個(gè)學(xué)生成績(jī)(每個(gè)學(xué)生有4門課),要求在用戶輸入學(xué)號(hào)后,能輸出學(xué)生的全部成績(jī),用指針函數(shù)實(shí)現(xiàn)。,6.2程序如下:voidmain()floatscore4=66,76,86,96,66,77,88,99,48,78,89,90;float*serach(float(*pointer)4,intn);float*p;inti,m;printf(“Enterthenumberofstudent:”);scanf(“%d”,float*search(float(*pointer)4,intn)/*函數(shù)的返回值為指向?qū)嵭蛿?shù)據(jù)的指針*/float*pt;pt=*(pointer+n);/*把指針定位在第n個(gè)學(xué)生的第一個(gè)數(shù)據(jù)上*/return(pt);/*函數(shù)的放回值為第n個(gè)學(xué)生成績(jī)的首地址*/運(yùn)行結(jié)果如下:Enterthenumberofstudent:1ThescoresofNo.%dare:66.00,77.00,88.00,99.00,6.3指向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論