![C程序設(shè)計(jì)-教案-31(2課時(shí)-通過指針引用數(shù)組)_第1頁](http://file4.renrendoc.com/view/acfcbae93ad97d87c6a5749301f99304/acfcbae93ad97d87c6a5749301f993041.gif)
![C程序設(shè)計(jì)-教案-31(2課時(shí)-通過指針引用數(shù)組)_第2頁](http://file4.renrendoc.com/view/acfcbae93ad97d87c6a5749301f99304/acfcbae93ad97d87c6a5749301f993042.gif)
![C程序設(shè)計(jì)-教案-31(2課時(shí)-通過指針引用數(shù)組)_第3頁](http://file4.renrendoc.com/view/acfcbae93ad97d87c6a5749301f99304/acfcbae93ad97d87c6a5749301f993043.gif)
![C程序設(shè)計(jì)-教案-31(2課時(shí)-通過指針引用數(shù)組)_第4頁](http://file4.renrendoc.com/view/acfcbae93ad97d87c6a5749301f99304/acfcbae93ad97d87c6a5749301f993044.gif)
![C程序設(shè)計(jì)-教案-31(2課時(shí)-通過指針引用數(shù)組)_第5頁](http://file4.renrendoc.com/view/acfcbae93ad97d87c6a5749301f99304/acfcbae93ad97d87c6a5749301f993045.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 教案序號031周次授課形式新授授課章節(jié)名稱通過指針引用數(shù)組教學(xué)目的通過指針引用數(shù)組教學(xué)重點(diǎn)通過指針引用數(shù)組教學(xué)難點(diǎn)通過指針引用數(shù)組使用教具機(jī)房課外作業(yè)課后體會(huì)授課主要內(nèi)容8.3.1數(shù)組元素的指針一個(gè)變量有地址,一個(gè)數(shù)組包含若干元素,每個(gè)數(shù)組元素都有相應(yīng)的地址指針變量可以指向數(shù)組元素(把某一元素的地址放到一個(gè)指針變量中)所謂數(shù)組元素的指針就是數(shù)組元素的地址可以用一個(gè)指針變量指向一個(gè)數(shù)組元素inta10=1,3,5,7,9,11,13,15,17,19;int*p;p=&a0;8.3.2在引用數(shù)組元素時(shí)指針的運(yùn)算在指針指向數(shù)組元素時(shí),允許以下運(yùn)算:加一個(gè)整數(shù)(用+或+=),如p+1減一個(gè)整數(shù)(用
2、-或-=),如p-1自加運(yùn)算,如p+,+p自減運(yùn)算,如p-,-p兩個(gè)指針相減,如p1-p2(只有p1和p2都指向同一數(shù)組中的元素時(shí)才有意義)(1)如果指針變量p已指向數(shù)組中的一個(gè)元素,則p+1指向同一數(shù)組中的下一個(gè)元素,p-1指向同一數(shù)組中的上一個(gè)元素。floata10,*p=a;假設(shè)a0的地址為2000,則p的值為2000p+1的值為2004P-1的值為1996(2)如果P的初值為&a0,則p+i和a+i就是數(shù)組元素ai的地址,或者說,它們指向a數(shù)組序號為i的元素(3)*(p+i)或*(a+i)是p+i或a+i所指向的數(shù)組元素,即ai。(4)如果指針p1和p2都指向同一數(shù)組p2-p1的值是4
3、不能p1+p28.3.3通過指針引用數(shù)組元素引用一個(gè)數(shù)組元素,可用下面兩種方法:(1)下標(biāo)法,如ai形式(2)指針法,如*(a+i)或*(p+i)其中a是數(shù)組名,p是指向數(shù)組元素的指針變量,其初值p=a8.3.3通過指針引用數(shù)組元素例8.6有一個(gè)整型數(shù)組a,有10個(gè)元素,要求輸出數(shù)組中的全部元素。解題思路:引用數(shù)組中各元素的值有3種方法:(1)下標(biāo)法;(2)通過數(shù)組名計(jì)算數(shù)組元素地址,找出元素的值;(3)用指針變量指向數(shù)組元素分別寫出程序,以資比較分析。(1)下標(biāo)法。#includeintmain()inta10;inti;printf(“enter10integernumbers:n);fo
4、r(i=0;i10;i+)scanf(%d”,&ai);for(i=0;i10;i+)printf(“d”,ai);printf(%n);return0;(2)通過數(shù)組名計(jì)算數(shù)組元素地址,找出元素的值#includeintmain()inta10;inti;printf(“enter10integernumbers:n);for(i=0;i10;i+)scanf(%d”,&ai);for(i=0;i10;i+)printf(“d”,*(a+i);printf(n);return0;(3)用指針變量指向數(shù)組元素#includeintmain()inta10;int*p,i;printf(“ent
5、er10integernumbers:n);for(i=0;i10;i+)scanf(%d”,&ai);for(p=a;p3種方法的比較:第和第種方法執(zhí)行效率相同C編譯系統(tǒng)是將ai轉(zhuǎn)換為*(a+i)處理的,即先計(jì)算元素地址。因此用第和第種方法找數(shù)組元素費(fèi)時(shí)較多。3種方法的比較:第種方法比第(1)、第種方法快用指針變量直接指向元素,不必每次都重新計(jì)算地址,像p+這樣的自加操作是比較快的這種有規(guī)律地改變地址值(p+)能大大提高執(zhí)行效率3種方法的比較:用下標(biāo)法比較直觀,能直接知道是第幾個(gè)元素。用地址法或指針變量的方法不直觀,難以很快地判斷出當(dāng)前處理的是哪一個(gè)元素。例8.7通過指針變量輸出整型數(shù)組a的
6、10個(gè)元素。解題思路:用指針變量p指向數(shù)組元素,通過改變指針變量的值,使p先后指向a0到a9各元素。#includeintmain()int*p,i,a10;p=a;printf(“enter10integernumbers:n);for(i=0;i10;i+)scanf(“%d”,p+);for(i=0;i8.3.4用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù)時(shí),因?yàn)閷?shí)參數(shù)組名代表該數(shù)組首元素的地址,形參應(yīng)該是一個(gè)指針變量C編譯都是將形參數(shù)組名作為指針變量來處理的intmain()voidfun(intarr口,intn;intarray10;Ifun(array,10);return0;voidf
7、un(intarr,intn)intmain()voidfun(intarr口,intn;intarray10;Ifun(array,10);return0;voidfun(int*arr,intn)實(shí)參數(shù)組名是指針常量,但形參數(shù)組名是按指針變量處理在函數(shù)調(diào)用進(jìn)行虛實(shí)結(jié)合后,它的值就是實(shí)參數(shù)組首元素的地址在函數(shù)執(zhí)行期間,形參數(shù)組可以再被賦值voidfun(arr,intn)printf(%dn,*arr);arr=arr+3;printf(%dn,*arr);例8.8將數(shù)組a中n個(gè)整數(shù)按相反順序存放解題思路:將a0與an-1對換,將a4與a5對換。例8.8將數(shù)組a中n個(gè)整數(shù)按相反順序存放解題思
8、路:將a0與an-1對換,將a4與a5對換。例8.8將數(shù)組a中n個(gè)整數(shù)按相反順序存放解題思路:將a0與an-1對換,將a4與a5對換。例8.8將數(shù)組a中n個(gè)整數(shù)按相反順序存放解題思路:將a0與an-1對換,將a4與a5對換。例8.8將數(shù)組a中n個(gè)整數(shù)按相反順序存放解題思路:將a0與an-1對換,將a4與a5對換。#includeintmain()voidinv(intx,intn);inti,a10=3,7,9,11,0,6,7,5,4,2;for(i=0;i10;i+)printf(“d”,ai);printf(n);inv(a,10);for(i=0;i10;i+)printf(“d”,a
9、i);printf(n);return0;voidinv(intx,intn)inttemp,i,j,m=(n-1)/2;for(i=0;i=m;i+)j=n-1-i;temp=xi;xi=xj;xj:temp;例8.9改寫例8.8,用指針變量作實(shí)參。例8.10用指針方法對10個(gè)整數(shù)按由大到小順序排序。解題思路:在主函數(shù)中定義數(shù)組a存放10個(gè)整數(shù),定義int*型指針變量p指向a0定義函數(shù)sort使數(shù)組a中的元素按由大到小的順序排列在主函數(shù)中調(diào)用sort函數(shù),用指針p作實(shí)參用選擇法進(jìn)行排序#includeintmain()voidsort(intx,intn);inti,*p,a10;p=a;f
10、or(i=0;i10;i+)scanf(“%d”,p+);p=a;sort(p,10);for(p=a,i=0;i10;i+)printf(“%d”,*p);p+;printf(n);return0;voidsort(intx,intn)inti,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jxk)k=j;if(k!=i)t=xi;xi=xk;xk=t;8.3.5通過指針引用多維數(shù)組指針變量可以指向一維數(shù)組中的元素,也可以指向多維數(shù)組中的元素。但在概念上和使用方法上,多維數(shù)組的指針比一維數(shù)組的指針要復(fù)雜一些。8.3.5通過指針引用多維數(shù)組1.多維數(shù)組元素的地址int
11、a34=1,3,5,7,9,11,13,15,17,19,21,23;a代表第0行首地址a+1代表第1行首地址a+2代表第2行首地址a+i代表行號為i的行首地址(按行變化)*(a+i)代表什么?a0代表a00的地址a0+1代表a01的地址a0+2代表a02的地址a0+3代表a03的地址a1代表誰的地址?a1+1代表誰的地址?a1+2代表誰的地址?a1+3代表誰的地址?ai+j代表誰的地址?例8.11二維數(shù)組的有關(guān)數(shù)據(jù)(地址和值)#includeintmain()inta34=1,3,5,7,9,11,13,15,17,19,21,23;printf(%d,%dn”,a,*a);printf(%
12、d,%dn”,a0,*(a+0);printf(“%d,%dn”,&a0,&a00);printf(“%d,%dn”,a1,a+1);printf(%d,%dn”,&a10,*(a+1)+0);printf(%d,%dn”,a2,*(a+2);printf(%d,%dn”,&a2,a+2);printf(“%d,%dn”,a10,*(*(a+1)+0);printf(%d,%dn”,*a2,*(*(a+2)+0);return0;printf(%d,%dn”,a,*a);printf(%d,%dn”,a0,*(a+0);printf(“%d,%dn”,&a0,&a00);printf(“%d,
13、%dn”,a1,a+1);printf(%d,%dn”,&a10,*(a+1)+0);printf(%d,%dn”,a2,*(a+2);printf(%d,%dn”,&a2,a+2);printf(“%d,%dn”,a10,*(*(a+1)+0);printf(%d,%dn”,*a2,*(*(a+2)+0);return0;printf(%d,%dn”,a,*a);printf(%d,%dn”,a0,*(a+0);printf(“%d,%dn”,&a0,&a00);printf(“%d,%dn”,a1,a+1);printf(%d,%dn”,&a10,*(a+1)+0);printf(%d,%
14、dn”,a2,*(a+2);printf(%d,%dn”,&a2,a+2);printf(“%d,%dn”,a10,*(*(a+1)+0);printf(%d,%dn”,*a2,*(*(a+2)+0);return0;2.指向多維數(shù)組元素的指針變量(1)指向數(shù)組元素的指針變量例8.12有一個(gè)3X4的二維數(shù)組,要求用指向元素的指針變量輸出二維數(shù)組各元素的值。解題思路:二維數(shù)組的元素是整型的,它相當(dāng)于整型變量,可以用1玳*型指針變量指向它二維數(shù)組的元素在內(nèi)存中是按行順序存放的,即存放完序號為0的行中的全部元素后,接著存放序號為1的行中的全部元素,依此類推因此可以用一個(gè)指向整型元素的指針變量,依次指
15、向各個(gè)元素#includeintmain()inta34=1,3,5,7,9,11,13,15,17,19,21,23;int*p;for(p=a0;p解題思路:假設(shè)仍然用例8.12程序中的二維數(shù)組,例8.12中定義的指針變量是指向變量或數(shù)組元素的,現(xiàn)在改用指向一維數(shù)組的指針變量。#includeintmain()inta34=1,3,5,7,9,11,13,15,17,19,21,23;int(*p)4,i,j;p=a;printf(“enterrowandcolum:);scanf(“d,%d”,&i,&j);printf(“a%d,%d=%dn”,i,j,*(*(p+i)+j);retu
16、rn0;3.用指向數(shù)組的指針作函數(shù)參數(shù)一維數(shù)組名可以作為函數(shù)參數(shù),多維數(shù)組名也可作函數(shù)參數(shù)。用指針變量作形參,以接受實(shí)參數(shù)組名傳遞來的地址??梢杂袃煞N方法:用指向變量的指針變量用指向一維數(shù)組的指針變量例8.14有一個(gè)班,3個(gè)學(xué)生,各學(xué)4門課,計(jì)算總平均分?jǐn)?shù)以及第n個(gè)學(xué)生的成績。解題思路:這個(gè)題目是很簡單的。本例用指向數(shù)組的指針作函數(shù)參數(shù)。用函數(shù)average求總平均成績,用函數(shù)search找出并輸出第i個(gè)學(xué)生的成績。#includeintmain()voidaveragefloat*p,intn);voidsearchfloat(*p)4,intn);floatscore34=65,67,70
17、,60,80,87,90,81,90,99,100,98;average(*score,12);search(score,2);return0;voidaveragefloat*p,intn)float*p_end;floatsum=0,aver;p_end=p+n-1;for(;P=P_end;p+)sum=sum+(*p);aver=sum/n;printf(average=%5.2fn”,aver);#includeintmain()voidaveragefloat*p,intn);voidsearchfloat(*p)4,intn);floatscore34=65,67,70,60,8
18、0,87,90,81,90,99,100,98;average(*score,12);search(score,2);return0;voidsearchfloat(*p)4,intn)inti;printf(ThescoreofNo.%dare:n,n);for(i=0;i4;i+)printf(%5.2f”,*(*(p+n)+i);printf(n);例8.15在上題基礎(chǔ)上,查找有一門以上課程不及格的學(xué)生,輸出他們的全部課程的成績。解題思路:在主函數(shù)中定義二維數(shù)組score,定義search函數(shù)實(shí)現(xiàn)輸出有一門以上課程不及格的學(xué)生的全部課程的成績,形參p的類型是float(*)4。在調(diào)用search函數(shù)時(shí),用score作為實(shí)參,把score0的地址傳給形參p。#includeintmain()voidsearchfloat(*p)4,intn);floatscore34=65,57,70,60,58,87,90,81,90,99,100,98;search(score,3);return0;voidsearchfloat(*p)4,intn)inti,j,flag;for(j=0;jn;j+)flag=
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年代保管檔案協(xié)議(2篇)
- 2025年企業(yè)單位雇傭合同模板(2篇)
- 2025年買賣合作廉潔協(xié)議經(jīng)典版(2篇)
- 2025年交通事故自行協(xié)商協(xié)議(三篇)
- 2025年個(gè)人汽車貸款擔(dān)保合同簡單版(2篇)
- 地鐵項(xiàng)目居間合同協(xié)議書
- 八年級大考數(shù)學(xué)試卷
- 幼兒園全包裝修合同條款
- 沙石運(yùn)輸誠信體系建設(shè)合同
- 樂器運(yùn)輸協(xié)調(diào)協(xié)議
- 動(dòng)火作業(yè)安全管理要求及控制措施
- 詩豪劉禹錫一生部編教材PPT
- 資源循環(huán)科學(xué)和工程專業(yè)建設(shè)探討
- 中國營養(yǎng)師培訓(xùn)教材1
- 2023年河南省鄭州市一模道德與法治試題(含答案)
- 《民航服務(wù)溝通技巧》教案第13課內(nèi)部溝通基礎(chǔ)知識(shí)
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(語文)試題庫含答案解析
- FZ/T 54024-2019錦綸6預(yù)取向絲
- 2022年云南省中考數(shù)學(xué)試卷及答案
- 30453自考機(jī)電一體化技術(shù)及應(yīng)用小抄
- 水利生產(chǎn)安全事故典型案例分析
評論
0/150
提交評論