免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言數(shù)組指針和指向數(shù)組的指針變量數(shù)組名作函數(shù)參數(shù)數(shù)組名可以作函數(shù)的實(shí)參和形參。如:main()int array10;f(array,10);f(int arr,int n);array為實(shí)參數(shù)組名,arr為形參數(shù)組名。在學(xué)習(xí)指針變量之后就更容易理解這個(gè)問(wèn)題了。數(shù)組名就是數(shù)組的首地址,實(shí)參向形參傳送數(shù)組名實(shí)際上就是傳送數(shù)組的地址,形參得到該地址后也指向同一數(shù)組。這就好象同一件物品有兩個(gè)彼此不同的名稱一樣。同樣,指針變量的值也是地址,數(shù)組指針變量的值即為數(shù)組的首地址,當(dāng)然也可作為函數(shù)的參數(shù)使用?!纠?0.15】float aver(float *pa);main()float sco5,av,*sp;int i;sp=sco;printf(ninput 5 scores:n);for(i=0;i5;i+) scanf(%f,&scoi);av=aver(sp);printf(average score is %5.2f,av);float aver(float *pa)int i;float av,s=0;for(i=0;i5;i+) s=s+*pa+;av=s/5;return av;【例10.16】將數(shù)組a中的n個(gè)整數(shù)按相反順序存放。算法為:將a0與an-1對(duì)換,再a1與an-2 對(duì)換,直到將a(n-1/2)與an-int(n-1)/2)對(duì)換。今用循環(huán)處理此問(wèn)題,設(shè)兩個(gè)“位置指示變量”i和j,i的初值為0,j的初值為n-1。將ai與aj交換,然后使i的值加1,j的值減1,再將ai與aj交換,直到i=(n-1)/2為止,如圖所示。程序如下:void inv(int x,int n) /*形參x是數(shù)組名*/int temp,i,j,m=(n-1)/2;for(i=0;i=m;i+)j=n-1-i;temp=xi;xi=xj;xj=temp;return;main()int i,a10=3,7,9,11,0,6,7,5,4,2;printf(The original array:n);for(i=0;i10;i+)printf(%d,ai);printf(n);inv(a,10);printf(The array has benn inverted:n);for(i=0;i10;i+)printf(%d,ai);printf(n);對(duì)此程序可以作一些改動(dòng)。將函數(shù)inv中的形參x改成指針變量?!纠?0.17】對(duì)例10.16可以作一些改動(dòng)。將函數(shù)inv中的形參x改成指針變量。程序如下:void inv(int *x,int n) /*形參x為指針變量*/int *p,temp,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i=p;i+,j-)temp=*i;*i=*j;*j=temp;return;main()int i,a10=3,7,9,11,0,6,7,5,4,2;printf(The original array:n);for(i=0;i10;i+)printf(%d,ai);printf(n);inv(a,10);printf(The array has benn inverted:n);for(i=0;i10;i+)printf(%d,ai);printf(n);運(yùn)行情況與前一程序相同?!纠?0.18】從0個(gè)數(shù)中找出其中最大值和最小值。調(diào)用一個(gè)函數(shù)只能得到一個(gè)返回值,今用全局變量在函數(shù)之間“傳遞”數(shù)據(jù)。程序如下:int max,min; /*全局變量*/void max_min_value(int array,int n)int *p,*array_end;array_end=array+n;max=min=*array;for(p=array+1;pmax)max=*p;else if (*pmin)min=*p;return;main()int i,number10;printf(enter 10 integer umbers:n);for(i=0;i10;i+)scanf(%d,&numberi);max_min_value(number,10);printf(nmax=%d,min=%dn,max,min);說(shuō)明:1. 在函數(shù)max_min_value中求出的最大值和最小值放在max和min中。由于它們是全局,因此在主函數(shù)中可以直接使用。2. 函數(shù)max_min_value中的語(yǔ)句:max=min=*array;array是數(shù)組名,它接收從實(shí)參傳來(lái)的數(shù)組numuber的首地址。*array相當(dāng)于*(&array0)。上述語(yǔ)句與 max=min=array0;等價(jià)。3. 在執(zhí)行for循環(huán)時(shí),p的初值為array+1,也就是使p指向array1。以后每次執(zhí)行p+,使p指向下一個(gè)元素。每次將*p和max與min比較。將大者放入max,小者放min。4. 函數(shù)max_min_value的形參array可以改為指針變量類型。實(shí)參也可以不用數(shù)組名,而用指針變量傳遞地址?!纠?0.19】程序可改為:int max,min; /*全局變量*/void max_min_value(int *array,int n)int *p,*array_end;array_end=array+n;max=min=*array;for(p=array+1;pmax)max=*p;else if (*pmin)min=*p;return;main()int i,number10,*p;p=number; /*使p指向number數(shù)組*/printf(enter 10 integer umbers:n);for(i=0;i10;i+,p+)scanf(%d,p);p=number;max_min_value(p,10);printf(nmax=%d,min=%dn,max,min);歸納起來(lái),如果有一個(gè)實(shí)參數(shù)組,想在函數(shù)中改變此數(shù)組的元素的值,實(shí)參與形參的對(duì)應(yīng)關(guān)系有以下種:1. 形參和實(shí)參都是數(shù)組名。main()int a10;f(a,10)f(int x,int n)和指的是同一組數(shù)組。2. 實(shí)用數(shù)組,形參用指針變量。main()int a10;f(a,10)f(int *x,int n)3. 實(shí)參、型參都用指針變量。4. 實(shí)參為指針變量,型參為數(shù)組名?!纠?0.20】用實(shí)參指針變量改寫(xiě)將n個(gè)整數(shù)按相反順序存放。void inv(int *x,int n)int *p,m,temp,*i,*j;m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i=p;i+,j-)temp=*i;*i=*j;*j=temp;return;main()int i,arr10=3,7,9,11,0,6,7,5,4,2,*p;p=arr;printf(The original array:n);for(i=0;i10;i+,p+)printf(%d,*p);printf(n);p=arr;inv(p,10);printf(The array has benn inverted:n);for(p=arr;parr+10;p+)printf(%d,*p);printf(n);注意:main函數(shù)中的指針變量p是有確定值的。即如果用指針變作實(shí)參,必須現(xiàn)使指針變量有確定值,指向一個(gè)已定義的數(shù)組?!纠?0.21】用選擇法對(duì)10個(gè)整數(shù)排序。main()int *p,i,a10=3,7,9,11,0,6,7,5,4,2;printf(The original array:n);for(i=0;i10;i+)printf(%d,ai);printf(n);p=a;sort(p,10);for(p=a,i=0;i10;i+)printf(%d ,*p);p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目環(huán)境衛(wèi)生掃除制度
- 中小學(xué)托管食堂財(cái)務(wù)制度
- 物業(yè)綠化衛(wèi)生管理制度
- 衛(wèi)生餐飲消毒管理制度
- 熱菜區(qū)域衛(wèi)生制度
- 微商平臺(tái)財(cái)務(wù)制度
- 奶茶店衛(wèi)生規(guī)章制度
- 學(xué)生組織財(cái)務(wù)制度范本
- 衛(wèi)生保潔長(zhǎng)效管理制度
- 學(xué)校衛(wèi)生防疫預(yù)警制度
- 國(guó)家民用航空安全保衛(wèi)質(zhì)量控制方案
- 妊娠合并乙肝的課件
- 建筑施工安全檢查評(píng)分表(完整自動(dòng)計(jì)算版)
- 2025年中國(guó)肝素鈉數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 急性腦?;颊咦o(hù)理課件
- 2025年高職單招職業(yè)技能邏輯推理類專項(xiàng)練習(xí)卷及答案
- 中藥材儲(chǔ)存與養(yǎng)護(hù)規(guī)范
- 2025年藥品經(jīng)營(yíng)和使用質(zhì)量監(jiān)督管理辦法考核試題【含答案】
- 客戶案例經(jīng)典講解
- 礦山智能化開(kāi)采2025年無(wú)人作業(yè)技術(shù)智能化礦山設(shè)備智能化技術(shù)路線圖報(bào)告
- 機(jī)械標(biāo)準(zhǔn)-G類-管件
評(píng)論
0/150
提交評(píng)論