




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(1)內(nèi)存中字節(jié)的編號(hào)稱為字節(jié)的地址。內(nèi)存中連續(xù)的若干字節(jié)稱為一段內(nèi)存空間,這段空間的第一個(gè)字節(jié)的地址稱為這段空間的首地址,簡稱為這段空間的地址。一個(gè)地址“指向”它所對應(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á)式);}對于函數(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);對錯(cuò),函數(shù)值類型不符錯(cuò),s是常量錯(cuò),參數(shù)類型不符七、函數(shù)7.5特殊類型的參數(shù)(1)指針作為參數(shù)返回指針的函數(shù)數(shù)據(jù)類型*函數(shù)名(形參列表){函數(shù)體return(表達(dá)式);}對于調(diào)用inta,*b;char*x,s[100],c;……c=fun(24,s[5],s+7,*b);請寫出函數(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ù)不對");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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津機(jī)電職業(yè)技術(shù)學(xué)院《光學(xué)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 株洲師范高等??茖W(xué)?!恫牧蠝y試與分析技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年云南省昆明黃岡實(shí)驗(yàn)學(xué)校高三第四次聯(lián)考數(shù)學(xué)試題試卷含解析
- 河南省鎮(zhèn)平縣聯(lián)考2025年初三下學(xué)期期末考試化學(xué)試題(A卷)含解析
- 沈陽城市建設(shè)學(xué)院《建筑透視》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年云南省宣威市第九中學(xué)高三下學(xué)期開學(xué)暑假驗(yàn)收考試語文試題含解析
- 天津仁愛學(xué)院《現(xiàn)代生物制藥工程原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省南通港閘區(qū)五校聯(lián)考2025屆中考化學(xué)試題全真模擬密押卷(五)含解析
- 安康學(xué)院《幼兒園區(qū)域活動(dòng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 腹水腹腔引流護(hù)理查房
- 獵頭公司簡介介紹
- 2025年ACR痛風(fēng)管理指南
- 智能建筑 停車場管理系統(tǒng)安裝及驗(yàn)收規(guī)范
- 2023-2024學(xué)年廣東省廣州市越秀區(qū)培正中學(xué)七年級(jí)(下)期中數(shù)學(xué)試卷(含答案)
- 2025年開封大學(xué)單招職業(yè)傾向性測試題庫附答案
- GB/T 45233-2025化工園區(qū)安全風(fēng)險(xiǎn)評(píng)估導(dǎo)則
- 廣東省汕頭市2025年普通高考第一次模擬考試生物學(xué)試題(含答案)
- 內(nèi)部控制體系建設(shè)咨詢項(xiàng)目咨詢服務(wù)合同范本
- AIGC賦能常微分方程課程混合式教學(xué)模式改革
- 2025年山東濟(jì)南鐵路局招聘510人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 福建省南平市2024-2025學(xué)年九年級(jí)上學(xué)期期末語文試題(解析版)
評(píng)論
0/150
提交評(píng)論