版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
掌握指針的定義和運算掌握指針作為函數(shù)參數(shù)傳遞數(shù)據(jù)的方法掌握動態(tài)內(nèi)存的分配和釋放掌握引用的定義和初始化掌握引用作為函數(shù)參數(shù)傳遞數(shù)據(jù)的方法掌握指針和引用的區(qū)別掌握函數(shù)的定義、聲明和調(diào)用方法本章目標函數(shù)-2-函數(shù)是完成某種獨立功能的子程序,可以看作是程序員定義的操作C++中函數(shù)可以重載,即同樣的函數(shù)名可以對應(yīng)多個不同的函數(shù)函數(shù)有自己的函數(shù)名和類型函數(shù)—函數(shù)聲明-3-函數(shù)的返回值、參數(shù)個數(shù)和參數(shù)類型稱為函數(shù)的原型或類型函數(shù)聲明,也叫函數(shù)原型說明。函數(shù)在使用(調(diào)用)前,必須先聲明:data_typefunction_name(data_typepara1,data_typepara2,...);一般將函數(shù)的聲明放到頭文件中。當(dāng)使用函數(shù)的時候需要包含該頭文件。函數(shù)—函數(shù)定義-4-函數(shù)定義的語法如下:data_typefunction_name(data_typepara1,data_typepara2,...){/*函數(shù)體,此處是執(zhí)行語句。*/}函數(shù)—定義和聲明-5-函數(shù)定義和聲明的區(qū)別:從語法形式上,函數(shù)定義有函數(shù)體,函數(shù)的聲明沒有函數(shù)體,以分號結(jié)束;函數(shù)的聲明不占內(nèi)存,函數(shù)的定義才導(dǎo)致編譯器給函數(shù)分配內(nèi)存;在同一個源文件中,相同的函數(shù)聲明可以出現(xiàn)多次,相同的函數(shù)定義只能出現(xiàn)一次函數(shù)—函數(shù)的返回-6-return語句兩種格式:return表達式;//同時返回表達式執(zhí)行結(jié)果return;//不返回任何值,用于返回值為void(空)的函數(shù)函數(shù)—函數(shù)的返回-7-return語句使用說明如下:在一個函數(shù)中,允許有多個return語句,但每次調(diào)用函數(shù)時只可能有一個return語句被執(zhí)行,因此函數(shù)的執(zhí)行結(jié)果是唯一的;return語句返回值的類型和函數(shù)聲明中定義的類型應(yīng)保持一致。如果兩者不一致,則以函數(shù)定義的類型為準,自動進行類型轉(zhuǎn)換,如無法強制轉(zhuǎn)換將出錯;如果函數(shù)定義的類型為void,則在函數(shù)中可省略return語句。函數(shù)—形參和實參-8-無參函數(shù)的定義形式:類型標識符函數(shù)名(){聲明部分語句}有參函數(shù)的定義形式:類型標識符函數(shù)名(形式參數(shù)表列){聲明部分語句}函數(shù)—形參和實參-9-形參和實參在定義函數(shù)時函數(shù)名后面括弧中的變量名稱稱為“形式參數(shù)”(簡稱“形參”)在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧中的參數(shù)(可以是一個表達式)稱為“實際參數(shù)”(簡稱“實參”)函數(shù)—內(nèi)聯(lián)函數(shù)-10-C++中,允許將函數(shù)體短小的函數(shù)定義成內(nèi)聯(lián)的,語法格式如下:inlinedata_typefunction_name(data_typepara1,data_typepara2,...);示例代碼://定義一個內(nèi)聯(lián)函數(shù),求兩個數(shù)中較大者inlineintMax(inta,intb){ returna>b?a:b;}函數(shù)—內(nèi)聯(lián)函數(shù)-11-內(nèi)聯(lián)函數(shù)的好處如下:閱讀和理解內(nèi)聯(lián)函數(shù)的調(diào)用,要比讀一條等價的條件表達式容易得多;如果需要做任何修改,修改函數(shù)要比找出并修改每一處等價表達式方便得多;函數(shù)—內(nèi)聯(lián)函數(shù)-12-內(nèi)聯(lián)函數(shù)的壞處如下:內(nèi)容短小(函數(shù)體中的語句只有一到兩句)的函數(shù)才適合定義成內(nèi)聯(lián)函數(shù),否則容易引起代碼膨脹;如果某個內(nèi)聯(lián)函數(shù)要在多個文件中被調(diào)用,該內(nèi)聯(lián)函數(shù)應(yīng)該在頭文件中定義,然后在需要調(diào)用的文件內(nèi),包含該頭文件。否則編譯連接時將出錯。函數(shù)—函數(shù)重載-13-函數(shù)重載:函數(shù)重載,也稱重載函數(shù)(overloadedfunction),同一個函數(shù)名,在相同的域內(nèi)被多次定義,但是參數(shù)表不同,而且一般函數(shù)的實現(xiàn)內(nèi)容不同。//求兩個整數(shù)中較大者intMax(inta,intb){ ......}//求三個浮點數(shù)中的較大者floatMax(floata,floatb,floatc){ ......}//調(diào)用示例inti1=1,i2=2;floatf1=0.0,f2=1.0,f2=3.0;......inta=Max(i1,i2);......floatf=Max(f1,f2,f3);......函數(shù)—函數(shù)重載-14-函數(shù)重載時,要求函數(shù)的參數(shù)個數(shù)或參數(shù)類型不同,函數(shù)的返回值類型不做要求。//合法的函數(shù)重載集合intMax(inta,intb);intMax(inta,intb,intc);intMax(floata,floatb);intMax(floatab,floatb,floatc);//下述函數(shù)集合由于只是返回值不同,//而參數(shù)表沒有進行區(qū)分,因此是非法的重載函數(shù)intMax(inta,intb);voidMax(inta,intb);函數(shù)—靜態(tài)函數(shù)-15-指函數(shù)的作用域僅局限于本文件靜態(tài)函數(shù)存儲在程序的靜態(tài)方法區(qū)中。靜態(tài)函數(shù)的特征:靜態(tài)函數(shù)聲明方式:statictypefunName();函數(shù)—const函數(shù)-16-能被const對象調(diào)用。常量成員函數(shù)不會修改該類的非const成員數(shù)據(jù)的值。const函數(shù):const函數(shù)聲明形式::classclassName{……public:(private) typefunctionName()const;……}指針-17-指針,也稱作指針變量,是一種自定義數(shù)據(jù)類型指針通過保存的是另一個變量(對象)的地址,用于指向變量或?qū)ο笾羔樤趯嶋H代碼中的主要用途有兩個作為函數(shù)參數(shù)傳遞數(shù)據(jù),操作動態(tài)內(nèi)存指針—指針的定義和初始化-18-定義指針變量的時候,最好初始化,否則在使用的時候,很容易引起錯誤。......intmain(intargc,char*argv[]){ inta=10;//定義一個整型變量a,并初始化為10 int*p1;//定義整型指針變量p1,但沒有初始化
int*p2=&a;//定義整型指針變量p2,用a的地址進行初始化//下面代碼輸出p1,p2得的值
......}1>正在編譯...1>PointerDemo.cpp1>f:\work\vc教材\src\ch02\pointerdemo\pointerdemo.cpp(11):warningC4700:使用了未初始化的局部變量“p1”1>正在編譯資源清單...1>Microsoft(R)Windows(R)ResourceCompilerVersion6.0.5724.01>Copyright(C)MicrosoftCorporation.Allrightsreserved.1>正在鏈接...指針—指針的算術(shù)運算-19-常用的指針運算是指針的賦值指針加減一個常數(shù)//指針的賦值inta=0;intb=1;int*p=&a;p=&b;//賦值操作,p重新指向了b//指針加減一個常數(shù)......int*p=0;cout<<"p的值:"<<p<<endl;p++;//指針增1cout<<"p的值:"<<p<<endl;p--;//指針減1cout<<"p的值:"<<p<<endl;執(zhí)行結(jié)果如下:p的值:00000000p的值:00000004p的值:00000000指針—指針作為函數(shù)參數(shù)-20-指針作為函數(shù)參數(shù)有兩個作用:引用傳遞(函數(shù)運行時形參改變實參的值)傳遞大內(nèi)存(比如數(shù)組)。函數(shù)參數(shù)傳遞可以分為兩種形式:值傳遞:函數(shù)運行時形參不改變實參的值引用傳遞:函數(shù)運行時形參改變實參的值指針—指針作為函數(shù)參數(shù)-21-指針進行引用傳遞:......intmain(intargc,char*argv[]){ ......inta=1; intb=2; SwapVarValue(&a,&b); ......}//定義交換變量值的函數(shù)voidSwapVarValue(int*p1,int*p2){ /*注意通過解引用(*)操作的是實參的值*/ inttemp=*p1;//定義變量temp備份*p1 *p1=*p2;//將*p2賦值給*p1; *p2=temp;//將原來*p1的值賦值給*p2}執(zhí)行結(jié)果如下:交換前,a=1b=2交換后,a=2b=1指針—指針作為函數(shù)參數(shù)-22-指針傳遞大內(nèi)存,指向結(jié)構(gòu)體、指向數(shù)組、指向類對象:......intmain(intargc,char*argv[]){ ......inta[]={1,3,5,7,8,9,10,12};//定義一個數(shù)組; nSum=ArraySum(a,nLenght);//調(diào)用函數(shù)求和......}intArraySum(int*Ary,intarySize){ intnSum=0; for(inti=0;i<arySize;i++) { nSum=nSum+*Ary;//通過解引用遍歷數(shù)組中的元素
Ary++;//步進一個單元
} returnnSum;}執(zhí)行結(jié)果如下:數(shù)組中所有元素的和是:55指針—操作動態(tài)內(nèi)存-23-指針的另一個重要用途就是操作動態(tài)內(nèi)存,操作動態(tài)內(nèi)存需要使用new和delete操作符:type*pointer=newtype[size];type是指針的數(shù)據(jù)類型size:要獲取的內(nèi)存單元數(shù),如果要獲取的內(nèi)存單元是1個,可以省略[]動態(tài)內(nèi)存使用完畢,一定要用delete將其釋放,語法格式如下:delete[]pointer;指針—操作動態(tài)內(nèi)存-24-動態(tài)內(nèi)存分配的示例代碼如下:int*p=newint[5];//動態(tài)分配5個整型單元的內(nèi)存(20個字節(jié)),內(nèi)存的首地址是pchar*s=newchar[10];//動態(tài)分配10個字符單元(10個字節(jié)),內(nèi)存的首地址是sintpa=newint;//分配1個整型單元(4個字節(jié)),內(nèi)存的首地址是pa......指針—函數(shù)指針-25-使用typedef定義指針指向普通函數(shù)的指針函數(shù)指針數(shù)組指向“函數(shù)指針數(shù)組”的指針函數(shù)指針與類引用-26-引用是一種自定義數(shù)據(jù)類型,就是對象的另一個名字。在實際程序中,引用主要用作函數(shù)的參數(shù)引用—引用的定義和初始化-27-引用通過在變量名前添加“&”符號來定義,定義引用時必須進行初始化。引用定義和初始化的語法格式如下:type&var_name=var_other;引用—引用的定義和初始化-28-示例代碼:......intmain(intargc,char*argv[]){ inta=0;//定義變量a,并初始化為0 int&r=a;//定義引用變量r,r是a的別名
cout<<"a的初值是:"<<a<<endl;
cout<<"r的初值是:"<<r<<endl;
r++; cout<<"a="<<a<<endl; cout<<"r="<<r<<endl; return0;};執(zhí)行結(jié)果如下:a的初值是:0r的初值是:0a=1r=1引用—引用作為函數(shù)參數(shù)-29-引用的主要作用就是用于函數(shù)參數(shù),實現(xiàn)引用傳遞......intmain(intargc,char*argv[]){inta=1;intb=2; cout<<"交換前,a="<<a<<"b="<<b<<endl; SwapVarValue(a,b); cout<<"交換后,a="<<a<<"b="<<b<<endl; return0;}//定義交換變量值的函數(shù)voidSwapVarValue(int&r1,int&r2){ /*注意通過解引用(*)操作的是實參的值*/ inttemp=r1;//定義變量temp備份r1 r1=r2;//將r2賦值給r1; r2=temp;//將原來r1的值賦值給r2}執(zhí)行結(jié)果如下:交換前,a=1b=2交換后,a=2b=1引用—引用和指針的區(qū)別-30-引用在使用時不需要符號
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人工耳蝸行業(yè)政策分析:人工耳蝸行業(yè)標準推動人工耳蝸技術(shù)普及
- 2025年個人三項機制學(xué)習(xí)心得體會模版(3篇)
- 課題申報參考:緊密型醫(yī)聯(lián)體視角下大灣區(qū)老年中醫(yī)藥服務(wù)評價體系構(gòu)建與實證研究
- 二零二五年度集團高層管理人員任期制競聘與續(xù)聘合同6篇
- 2025版小時工定期雇傭合同范本3篇
- 2025版土地征收及安置補償中介服務(wù)合同3篇
- 全新二零二五年度房地產(chǎn)銷售代理合同3篇
- 二零二五版企業(yè)內(nèi)部會計檔案安全保密服務(wù)協(xié)議3篇
- 2025年度文化創(chuàng)意產(chǎn)品開發(fā)與銷售合作協(xié)議范本4篇
- 二零二五年度廚具品牌設(shè)計創(chuàng)新合同4篇
- 圖像識別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個體戶店鋪租賃合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級英語閱讀理解(帶答案)
- 仁愛版初中英語單詞(按字母順序排版)
- 【奧運會獎牌榜預(yù)測建模實證探析12000字(論文)】
- 魯濱遜漂流記人物形象分析
- 危險廢物貯存?zhèn)}庫建設(shè)標準
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識課件
評論
0/150
提交評論