




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(1)內(nèi)存中字節(jié)的編號(hào)稱為字節(jié)的地址。內(nèi)存中連續(xù)的若干字節(jié)稱為一段內(nèi)存空間,這段空間的第一個(gè)字節(jié)的地址稱為這段空間的首地址,簡(jiǎn)稱為這段空間的地址。一個(gè)地址“指向”它所對(duì)應(yīng)的內(nèi)存空間。地址p所指向的內(nèi)存空間用*p表示。指針回顧……50215022502350245025502650275028502950305031503250335034……-58950335024p*p*5033*5024(2)變量代表了一段內(nèi)存空間,它有地址,它存放的數(shù)稱為值。什么類型的變量存放什么類型的數(shù)。把一個(gè)數(shù)存放在變量中稱為賦值。(3)指針變量也是變量,但只能存放地址。如果p是指針變量,p指向u表示p的值指向ux4……50215022502350245025502650275028502950305031503250335034……5022x1x2x362G1.36輸出是什么?main(){intx,*u,*v;x=20;u=&x;v=u;*v=30;printf("%d\n",x);}v……50215022502350245025502650275028502950305031503250335034……xu七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)指針作為參數(shù)時(shí),也是值傳遞注意形參的類型是指針。形參也是變量main(){intx,y;x=20;y=funx(&x);......}intfunx(int*s){.......}七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)輸出是什么?main(){intx,*u,*v;x=20;u=&x;fx(u);printf("%d\n",x);}fx(int*e){*e=30;}30exuv七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)以下程序輸出什么?main(){inta=5,b=2;b=yx(&a);printf("%d,%d\n",a,b);}intyx(int*x){intt;t=*x*2;++*x;returnt;}2,5七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)以下程序輸出什么?main(){inta=5,b=2;voidyx(int*a,int*b);/*?*/yx(&a,&b);printf("%d,%d\n",a,b);}voidyx(int*a,int*b){/*void表示什么*/intt;t=*a;*a=*b;*b=t;}2,5七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)main(){char*s="abcdef",*q;voidfun1(char*c);/*?*/fun1(s+3);puts(s);}voidfun1(char*c){(*c)++;}abceef七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)返回指針的函數(shù)數(shù)據(jù)類型*函數(shù)名(形參列表){函數(shù)體return(表達(dá)式);}int*abc(int*a,int*b){int*t;if(*a>*b)t=a;elset=b;returnt;}main(){intx=20,y=30,*p;p=abc(&x,&y);printf("%d\n",*p);}七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)main(){char*s="abcdef",*q;char*fun1(char*s);/*?*/q=fun1(s);printf("%c%c\n",*s,*q)}char*fun1(char*s){while(*s)s++;s--;returns;}af七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)返回指針的函數(shù)數(shù)據(jù)類型*函數(shù)名(形參列表){函數(shù)體return(表達(dá)式);}對(duì)于函數(shù)char*abc(inta,charb){……}以下調(diào)用是否正確?(A)printf("%s",abc(5,60));(B)inta;……a=abc(6,'p');(C)chars[10];……s=abc('6','7');(D)char*e;……abc(e,e+1);對(duì)錯(cuò),函數(shù)值類型不符錯(cuò),s是常量錯(cuò),參數(shù)類型不符七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)返回指針的函數(shù)數(shù)據(jù)類型*函數(shù)名(形參列表){函數(shù)體return(表達(dá)式);}對(duì)于調(diào)用inta,*b;char*x,s[100],c;……c=fun(24,s[5],s+7,*b);請(qǐng)寫出函數(shù)fun的函數(shù)頭charfun(intx,chary,char*z,intw)七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)(2)數(shù)組作為參數(shù)先看一個(gè)例子main(){inta[5]={1,2,3,4,5},i;int*x=a;x[2]=10;for(i=0;i<5;i++)printf("%d",a[i]);}121045七、函數(shù)數(shù)組作為參數(shù)看似將整個(gè)數(shù)組傳遞給函數(shù),而且可以在函數(shù)中改變數(shù)組。分析輸出結(jié)果main(){inta[5]={1,2,3,4,5},i;voidfun2(inta[]);fun2(a)for(i=0;i<5;i++)printf("%d",a[i]);}voidfun2(inty[]){y[2]=9;y[3]=y[1]-y[4];}129-35實(shí)際上數(shù)組傳遞時(shí)只是傳遞一個(gè)首地址的值。形參inty[]相當(dāng)于int*yvoidfun2(int*y){*(y+2)=9;*(y+3)=*(y+1)-*(y+4);}七、函數(shù)分別用數(shù)組和指針的方法編寫一個(gè)函數(shù),刪除一個(gè)字符串中的第一個(gè)字符。voiddelf(chars[]){inti;for(i=0;s[i];i++)s[i]=s[i+1];}voiddelf(char*s){char*p;for(p=s;*p;p++)*p=*(p+1);}七、函數(shù)用數(shù)組法:編寫一個(gè)函數(shù),求一個(gè)字符在一個(gè)字符串中的第一次出現(xiàn)的位置(下標(biāo)),如果不出現(xiàn),返回-1。用指針法:編寫一個(gè)函數(shù),求一個(gè)字符在一個(gè)字符串中的第一次出現(xiàn)的位置(指針),如果不出現(xiàn),返回NULL。intfindf(chars[],charc){inti;for(i=0;s[i];i++)if(c==s[i])returni;return–1;}intfindf(char*s,charc){char*p;for(p=s;*p;p++)if(c==*p)returnp;returnNULL;}七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)(2)數(shù)組作為參數(shù)(3)結(jié)構(gòu)體作為參數(shù)結(jié)構(gòu)體變量作為參數(shù)就如同整數(shù)、實(shí)數(shù)一樣。structst{inta;charb};main(){structstc,d;structstfun3(structsta);/*?*/c.a=8;c.b='k';d=fun3(c);printf(%d,%c\n",d.b,d.a);}structstfun3(structsta){a.a++;returna;}k,9七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)(2)數(shù)組作為參數(shù)(3)結(jié)構(gòu)體作為參數(shù)結(jié)構(gòu)體變量作為參數(shù)就如同整數(shù)、實(shí)數(shù)一樣。structst{inta;charb};typedefstructstST;main(){STc,d;STfun3(structsta);/*?*/c.a=8;c.b='k';d=fun3(c);printf(%d,%c\n",d.b,d.a);}STfun3(STa){a.a++;returna;}七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針C語言編譯后的二進(jìn)制程序在運(yùn)行時(shí)要讀入內(nèi)存。一個(gè)函數(shù)中的語句在內(nèi)存中連續(xù)存放,函數(shù)名代表首地址??梢远x指向函數(shù)的指針變量。如int(*p)();定義一個(gè)指針變量p,它的值是某一個(gè)函數(shù)的首地址。int表示函數(shù)類型。main(){char(*p)();p=fun1;p=fun2;...}charfun1(inta,floatb){....}charfun2(char*s){...}七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針C語言編譯后的二進(jìn)制程序在運(yùn)行時(shí)要讀入內(nèi)存。一個(gè)函數(shù)中的語句在內(nèi)存中連續(xù)存放,函數(shù)名代表首地址??梢远x指向函數(shù)的指針變量。如int(*p)();定義一個(gè)指針變量p,它的值是某一個(gè)函數(shù)的首地址。int表示函數(shù)類型。main(){charx,y;char(*p)();p=fun1;x=(*p)(3,0.4);/*x=fun1(3,0.4);*/p=fun2;y=(*p)("abc");/*y=fun2("abc");*/...}charfun1(inta,floatb){....}charfun2(char*s){...}七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針C語言編譯后的二進(jìn)制程序在運(yùn)行時(shí)要讀入內(nèi)存。一個(gè)函數(shù)中的語句在內(nèi)存中連續(xù)存放,函數(shù)名代表首地址。可以定義指向函數(shù)的指針變量。如int(*p)();定義一個(gè)指針變量p,它的值是某一個(gè)函數(shù)的首地址。int表示函數(shù)類型。以下程序有什么錯(cuò)誤?main(){char(*p)();p=fun1();p=fun2;...}charfun1(inta,floatb){....}intfun2(char*s){...}多括號(hào)類型不符七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針C語言編譯后的二進(jìn)制程序在運(yùn)行時(shí)要讀入內(nèi)存。一個(gè)函數(shù)中的語句在內(nèi)存中連續(xù)存放,函數(shù)名代表首地址。可以定義指向函數(shù)的指針變量。如int(*p)();定義一個(gè)指針變量p,它的值是某一個(gè)函數(shù)的首地址。int表示函數(shù)類型。以下程序有什么錯(cuò)誤?main(){charx,y;char(*p)();p=fun1;x=*p(3,0.4);/*x=fun1(3,0.4);*/p=fun2;y=*p("abc");/*y=fun2("abc");*/...}charfun1(inta,floatb){....}charfun2(char*s){...}*p應(yīng)寫成(*p)七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針7.7命令行參數(shù)main(intargc,char*argv[])main(intargc,char**argv)main(intargnum,char**arg)第一個(gè)形參表示參數(shù)個(gè)數(shù)(包括程序名)第二個(gè)形參是字符串?dāng)?shù)組,每一個(gè)字符串表示一個(gè)參數(shù)。以下程序可以顯示程序名及各個(gè)參數(shù):(運(yùn)行演示)main(intargc,char**argv){printf("thefilename:%s",argv[0]);printf("\nand%darguments:\n",argc-1);while(--argc>0)puts(*(++argv));}七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針7.7命令行參數(shù)main(intargc,char*argv[])main(intargc,char**argv)main(intargnum,char**arg)第一個(gè)形參表示參數(shù)個(gè)數(shù)(包括程序名)第二個(gè)形參是字符串?dāng)?shù)組,每一個(gè)字符串表示一個(gè)參數(shù)。以下程序用于復(fù)制文件,文件名由命令行輸入:main(intargc,char**argv){FILE*f1,*f2;charc;if(argc!=3){printf("參數(shù)不對(duì)");exit(0);}if((f1=fopen(argv[1],"rb"))==NULL)exit(0);if((f2=fopen(argv[2],"wb"))==NULL)exit(0);while(!feof(f1)){c=fgetc(f1);fputc(c,f2);}fclose(f1);fclose(f2);}七、函數(shù)7.5特殊類型的參數(shù)7.6指向函數(shù)的指針7.7命令行參數(shù)main(intargc,char*argv[])main(intargc,char**argv)main(int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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é)議書
- 蔬菜委托抽樣協(xié)議書
- 紅白事流動(dòng)席協(xié)議書
- 精準(zhǔn)備考2025年入團(tuán)考試試題與答案
- 2025學(xué)校物業(yè)服務(wù)合同范本
- 石頭購銷合同
- 2025軟件許可和服務(wù)中心合同樣板版本
- 2025建筑項(xiàng)目臨時(shí)占用土地合同范本
- 消防工作中的組織結(jié)構(gòu)優(yōu)化試題及答案
- 民用航空器維修人員考試的探索性分析與試題及答案方法
- 醫(yī)保工作自查表
- 管道支吊架培訓(xùn)教材課件
- COPD病人出院計(jì)劃
- 公司文件會(huì)審表
- (中職)體育與健康第七章 籃球運(yùn)動(dòng)課件
- 2、工程工質(zhì)量保證體系框圖
- 地鐵工程車輛段路基填方施工方案
- 路基路面排水設(shè)計(jì)(配圖說明共50頁)
- 有關(guān)種子農(nóng)藥化肥購銷合同模板
- 山東水利定額使用說明
- 鋼結(jié)構(gòu)焊接變形的火焰矯正方法
評(píng)論
0/150
提交評(píng)論