![C程序設(shè)計(jì)11-用指針變量訪問(wèn)下標(biāo)變量_第1頁(yè)](http://file4.renrendoc.com/view/0e8f3d688fe18a1d6555629d033dac3b/0e8f3d688fe18a1d6555629d033dac3b1.gif)
![C程序設(shè)計(jì)11-用指針變量訪問(wèn)下標(biāo)變量_第2頁(yè)](http://file4.renrendoc.com/view/0e8f3d688fe18a1d6555629d033dac3b/0e8f3d688fe18a1d6555629d033dac3b2.gif)
![C程序設(shè)計(jì)11-用指針變量訪問(wèn)下標(biāo)變量_第3頁(yè)](http://file4.renrendoc.com/view/0e8f3d688fe18a1d6555629d033dac3b/0e8f3d688fe18a1d6555629d033dac3b3.gif)
![C程序設(shè)計(jì)11-用指針變量訪問(wèn)下標(biāo)變量_第4頁(yè)](http://file4.renrendoc.com/view/0e8f3d688fe18a1d6555629d033dac3b/0e8f3d688fe18a1d6555629d033dac3b4.gif)
![C程序設(shè)計(jì)11-用指針變量訪問(wèn)下標(biāo)變量_第5頁(yè)](http://file4.renrendoc.com/view/0e8f3d688fe18a1d6555629d033dac3b/0e8f3d688fe18a1d6555629d033dac3b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十一章用指針變量訪問(wèn)下標(biāo)變量主要內(nèi)容概述:用指針變量訪問(wèn)下標(biāo)變量的原因及預(yù)備知識(shí)一2023/2/51用指針變量訪問(wèn)下標(biāo)變量的方法二用指針變量訪問(wèn)下標(biāo)變量的適用場(chǎng)合三通過(guò)指針變量訪問(wèn)下標(biāo)變量的原因靈活數(shù)組名作為指針時(shí),是不可改變的,所指對(duì)象是固定的指針變量所指對(duì)象可以改變效率高(不詳細(xì)講)特定情況下比較效率,需要匯編語(yǔ)言的知識(shí)效率其實(shí)差別不大有些地方不允許用數(shù)組名表示下標(biāo)變量2023/2/52第一節(jié)概述for(i=0;i<=999999;i++)printf(“%d”,*(a+i));70.5870.3170.3070.18for(p=a,i=0;i<=999999;i++)printf(“%d”,*(p+i));70.0670.2669.5769.68for(p=a,i=0;i<=999999;i++)printf(“%d”,*(p++));70.4970.3269.6769.86for(p=a;p<=a+999999;p++)printf(“%d”,*p);70.8870.0670.1770.152023/2/53預(yù)備知識(shí)(知識(shí)回顧)1.用指針變量訪問(wèn)普通變量的方法主函數(shù)中定義指針變量inta,*p;使指針變量指向一個(gè)對(duì)象p=&a;間接訪問(wèn)*p=100;被調(diào)函數(shù)中intmain(){inta;
}voidf(){
}f(&a);............*p=100;......int*p第二節(jié)用到第三節(jié)用到第一節(jié)概述2023/2/54預(yù)備知識(shí)(知識(shí)回顧)2.數(shù)組名作為指針時(shí),指向它的首元素一維數(shù)組的數(shù)組名,指向下標(biāo)變量二維數(shù)組的數(shù)組名,指向一維數(shù)組三維數(shù)組的數(shù)組名,指向二維數(shù)組......3.數(shù)組中的下標(biāo)變量在內(nèi)存中是連續(xù)存放的4.指針的運(yùn)算指針加1,指向下一個(gè)對(duì)象,指針減一,指向上一個(gè)對(duì)象指針增加(減少)一個(gè)值,仍然是指針,類型不變2023/2/55第二節(jié)用指針變量訪問(wèn)下標(biāo)變量的方法用指針變量訪問(wèn)一維數(shù)組中的下標(biāo)變量12本節(jié)主要內(nèi)容用指針變量訪問(wèn)二維數(shù)組中的下標(biāo)變量2023/2/56設(shè)有數(shù)組定義“inta[4];”,如何通過(guò)指針變量使a[0]變成100?通過(guò)指針變量訪問(wèn)普通變量的方法(主函數(shù)中)定義指針變量inta,*p;給指針變量賦值p=&a;間接訪問(wèn)*p=100;故訪問(wèn)下標(biāo)變量a[0]的代碼應(yīng)是:定義指針變量inta[4],*p;給指針變量賦值p=&a[0];間接訪問(wèn)*p=100;11.2.1
用指針變量訪問(wèn)一維數(shù)組的下標(biāo)變量//p=a;2023/2/57要訪問(wèn)a[0]、a[1]、a[2]...,如何操作?inta[4],*p;p=a;*p=100;*(p+1)=200;//a[1]=200;*(p+2)=300;//a[2]=300;......或者:
inta[4],*p;p=a;*p=100;p++;*p=200;p++;*p=300;......11.2.1
用指針變量訪問(wèn)一維數(shù)組的下標(biāo)變量數(shù)組元素是連續(xù)存放的pp+1p+2p+3a[0]a[1]a[2]a[3]p訪問(wèn)a[0]的代碼p指針加1,指向下一個(gè)對(duì)象2023/2/58練習(xí):利用指針變量輸出一維數(shù)組的所有元素解法1:inta[10]={1,2,3,4,5,6,7,8,9,0},*p,i;p=a;for(i=0;i<=9;i++)printf(“%3d”,*(p+i));
思考:若一開(kāi)始讓p指向a[1],能否輸出所有元素的值?解法2:inta[10]={1,2,3,4,5,6,7,8,9,0},*p=a,i;for(i=0;i<=9;i++)printf(“%3d”,*(p++));解法3:inta[10]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<=a+9;p++)printf(“%3d”,*p);11.2.1
用指針變量訪問(wèn)一維數(shù)組的下標(biāo)變量printf(“%3d”,*p);p++;*(p+i)也可以寫(xiě)成:p[i]2023/2/59例:輸入10個(gè)整數(shù)存入數(shù)組,求和(通過(guò)指針變量)#include<stdio.h>intmain(){inta[10],i,sum=0,*p=a;for(i=0;i<=9;i++){scanf(“%d”,p);
sum+=*p;
p++;
}
printf(“%d\n”,sum);
return0;}
思考:循環(huán)結(jié)束時(shí),p指向哪里?11.2.1
用指針變量訪問(wèn)一維數(shù)組的下標(biāo)變量2000p2000200420082012......1sum0i1012320042008通過(guò)指針變量訪問(wèn)二維數(shù)組中下標(biāo)變量的方法
inta[3][4],*p;p=&a[0][0];......//可訪問(wèn)任意一個(gè)下標(biāo)變量
說(shuō)明:上面的“p=&a[0][0];”,不要寫(xiě)成:
p=a;//會(huì)被警告。賦值后p指向什么?最簡(jiǎn)潔的寫(xiě)法是:
p=a[0];或
p=*a;
2023/2/51011.2.2
用指針變量訪問(wèn)二維數(shù)組的下標(biāo)變量a[0][0]a[0][1]a[0][2]a[0][3]pp+1p+2p+3p20002000a[1][0]p+4例:用指針變量輸出二維數(shù)組中各下標(biāo)變量的值方法1:inta[2][3]={1,2,3,4,5,6},*p=a[0],i,j;for(i=0;i<=1;i++)for(j=0;j<=2;j++)printf(“%3d”,*(p+3*i+j));方法2:
inta[2][3]={1,2,3,4,5,6},*p=a[0],i;for(i=0;i<=5;i++)printf(“%3d”,*(p+i));//*(p+i)也可寫(xiě)成*(p++)方法3:inta[2][3]={1,2,3,4,5,6},*p;for(p=a[0];p<=a[0]+5;p++)printf(“%3d”,*p);2023/2/51111.2.2
用指針變量訪問(wèn)二維數(shù)組的下標(biāo)變量p<=a[0]+5改成p<=a+5可否?結(jié)果會(huì)怎樣?例:鍵盤(pán)輸入三行字符,統(tǒng)計(jì)大寫(xiě)字母出現(xiàn)的次數(shù)#include<stdio.h>intmain(){chars[3][81],*p;inti,sum=0;for(i=0;i<=2;i++)gets(s[i]);for(i=0;i<=2;i++)for(p=s[i];*p!=0;p++)if(*p>=65&&*p<=90)sum++;printf(“%d\n”,sum);return0;}2023/2/51211.2.2
用指針變量訪問(wèn)二維數(shù)組的下標(biāo)變量2023/2/513用指針變量訪問(wèn)下標(biāo)變量的場(chǎng)合數(shù)組名作參數(shù)本節(jié)主要內(nèi)容1第三節(jié)用指針變量訪問(wèn)下標(biāo)變量的場(chǎng)合2voidf(...){............}2023/2/514討論:在哪訪問(wèn)下標(biāo)變量?在數(shù)組定義所在的函數(shù)中訪問(wèn)可用數(shù)組名訪問(wèn)可用指針變量訪問(wèn)在其他函數(shù)中訪問(wèn)僅使用,不修改
傳遞數(shù)組元素的地址(傳一個(gè)地址即可:f(a))修改數(shù)據(jù)傳值:無(wú)法修改傳遞地址(傳一個(gè)地址即可:f(a))11.3.1
用指針變量訪問(wèn)下標(biāo)變量的場(chǎng)合此時(shí),就需要用變量地址作實(shí)參,指針變量作形參,通過(guò)指針變量訪問(wèn)下標(biāo)變量intmain(){
inta[10];......}傳遞整個(gè)數(shù)組:f(a);//傳遞每個(gè)數(shù)組元素的值:f(a[0],a[1],a[2]…a[9])2023/2/515示意圖:(以一維數(shù)組為例)
主調(diào)函數(shù)被調(diào)函數(shù)
intmain()sub(int*p){{inta[10]……sub(a);……}
}11.3.2
數(shù)組名作參數(shù)相當(dāng)于執(zhí)行:p=a;2023/2/516例:主函數(shù)定義數(shù)組inta[5]={3,5,2,8,6},編寫(xiě)被調(diào)函數(shù)以計(jì)算所有數(shù)據(jù)之和(僅使用,不修改)intsum(int*p)//參數(shù)傳遞后,p指向?{inti,s=0;//此s并非主函數(shù)中的sfor(i=0;i<=4;i++)s+=*(p++);returns;}intmain(){inta[5]={3,5,2,8,6},s;s=sum(a);//實(shí)參a即&a[0]printf(“%d\n”,s);return0;}11.3.2
數(shù)組名作參數(shù)2023/2/517例:主函數(shù)定義數(shù)組inta[5]={3,5,2,8,6},編寫(xiě)被調(diào)函數(shù)使數(shù)組中每個(gè)元素都變成原來(lái)的兩倍(修改數(shù)據(jù))voiddb(int*p)//參數(shù)傳遞后,p指向a[0]{inti;for(i=0;i<=4;i++)*p=*(p++)*2;}intmain(){inta[5]={3,5,2,8,6},i;db(a);//實(shí)參a,就是&a[0]for(i=0;i<=4;i++)printf(“%3d”,a[i]);return0;}11.3.2
數(shù)組名作參數(shù)2023/2/518上面兩個(gè)例子中,形參“int*p”都可聲明成
int
p[],兩者等價(jià)voiddb(intp[])//p還是個(gè)指針變量{inti;for(i=0;i<=4;i++)*p=*(p++)*2;//p[i]=p[i]*2;}intmain(){inta[5]={3,5,2,8,6},i;db(a);for(i=0;i<=4;i++)printf(“%3d”,a[i]);return0;}11.3.2
數(shù)組名作參數(shù)2023/2/519關(guān)于intp[]和int*p等價(jià)的驗(yàn)證:intmain(){voidsub(int[]);inta[10]={1,3,5,2,7,9,6,8,0,4};printf(“%d,",sizeof(a));printf(“%p,",a);printf(“%p\n",&a);sub(a);printf("%p\n",a);return0;}voidsub(intx[]){printf("%d,",sizeof(x));printf("%p,",x);printf("%p,",&x);x++;printf("%p\n",x);}TC下的運(yùn)行結(jié)果:20,FFCC,FFCC2,
FFCC,FFCA,FFCEFFCC11.3.2
數(shù)組名作參數(shù)2023/2/520例:主函數(shù)給inta[3][5]輸入數(shù)據(jù),被調(diào)函數(shù)找出最大數(shù)和最小數(shù),存入主函數(shù)定義的變量中,主函數(shù)輸出#include<stdio.h>voidsub(int*,int*,int*);intmain(){inta[3][5],max,min,i,j;for(i=0;i<=2;i++) for(j=0;j<=4;j++) scanf("%d",&a[i][j]);sub(a[0],&max,&min);
printf("%d,%d\n",max,min);return0;}11.3.2
數(shù)組名作參數(shù)2023/2/521voidsub(int*p,int*pmax,int*pmin){inti;*pmax=*pmin=*p;for(i=1;i<=14;i++){if(*pmax<p[i])*pmax=p[i];if(*pmin>p[i])*pmin=p[i];}}11.3.2
數(shù)組名作參數(shù)2023/2/522課外思考:下面程序的問(wèn)題是什么?題目:二維數(shù)組存3人成績(jī),求總平均分
#include<stdio.h>
floataverage(int*,int);
int
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年九年級(jí)數(shù)學(xué)組第一次月測(cè)質(zhì)量檢測(cè)總結(jié)(四篇)
- 2025年二方賓館轉(zhuǎn)讓合同(三篇)
- 2025年個(gè)人車輛租賃合同格式范文(2篇)
- 水泥廠內(nèi)部裝修合同
- 親子游泳館裝修合同終止
- 水利工程淤泥清理運(yùn)輸合同
- 工業(yè)廠房裝修施工協(xié)議模板
- 別墅改造裝修合同協(xié)議
- 教堂裝修包清工合同模板
- 化妝品物流合同樣本
- 江蘇省鹽城市鹿鳴路初級(jí)中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期末考試語(yǔ)文試題(含答案)
- 新蘇教版一年級(jí)數(shù)學(xué)下冊(cè)第六單元《簡(jiǎn)單的數(shù)量關(guān)系(一)》教案(共2課時(shí))
- 浙江省寧波市九校2024-2025學(xué)年高一上學(xué)期期末聯(lián)考試題 數(shù)學(xué) 含答案
- GA/T 2146-2024法庭科學(xué)涉火案件物證檢驗(yàn)移動(dòng)實(shí)驗(yàn)室建設(shè)通用要求
- 北京市石景山區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2025年度服務(wù)外包合同:銀行呼叫中心服務(wù)外包協(xié)議3篇
- 【課件】跨學(xué)科實(shí)踐制作微型密度計(jì)++課件人教版物理八年級(jí)下冊(cè)
- 杜邦公司十大安全理念
- Module 2 Unit 2 I dont like ginger. (說(shuō)課稿)-2024-2025學(xué)年外研版(一起)英語(yǔ)二年級(jí)上冊(cè)
- 廣聯(lián)達(dá)2024算量軟件操作步驟詳解
- 瞻望病人的護(hù)理
評(píng)論
0/150
提交評(píng)論