




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第三章函數(shù)和函數(shù)模版,3.1函數(shù)的參數(shù)及其傳遞方式,值傳遞分為:變量值傳遞和變量地址的值傳遞 C+中分為:值傳遞和地址傳遞(引用傳遞),2,3.1函數(shù)的參數(shù)及其傳遞方式,1,2,1,2,3,3.1函數(shù)的參數(shù)及其傳遞方式,1,2,b,a,a的地址,b的地址,x,y,t,a的地址,b的地址,4,3.1函數(shù)的參數(shù)及其傳遞方式,要注意區(qū)分: 參數(shù)傳遞中傳地址和傳地址值的不同。 設(shè)計(jì)函數(shù)時(shí)要注意: 對(duì)象作參數(shù),對(duì)象指針作參數(shù),對(duì)象引用作參數(shù),5,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.1對(duì)象作函數(shù)參數(shù) 普通變量作參數(shù),6,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.2對(duì)象指針作函數(shù)參數(shù) 指針作參數(shù),7,3.
2、1函數(shù)的參數(shù)及其傳遞方式,3.1.3引用作為函數(shù)參數(shù) 引用的聲明形式: 數(shù)據(jù)類型 則a為x變量(對(duì)象)的引用,a和x對(duì)應(yīng)同一個(gè)內(nèi)存空間。a未單獨(dú)分配內(nèi)存。b為a的引用。,8,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.3引用作為函數(shù)參數(shù) 引用的聲明形式: 數(shù)據(jù)類型 b=10; 則a為x變量(對(duì)象)的引用,a和x對(duì)應(yīng)同一個(gè)內(nèi)存空間。a未單獨(dú)分配內(nèi)存。b為a的引用。 程序中對(duì)引用的改變會(huì)使被引用對(duì)象發(fā)生改變。,9,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.3引用作為函數(shù)參數(shù) 引用作函數(shù)參數(shù): 類型 函數(shù)名(類型 則 long int i ; 等價(jià)于 lint i ;,13,Typedef使用說(shuō)明,等價(jià)于,1
3、4,引用數(shù)組名作參數(shù),15,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.4默認(rèn)參數(shù) 函數(shù)定義或函數(shù)聲明時(shí),給出形參的值,此時(shí)稱為參數(shù)的默認(rèn)值。 設(shè)置了默認(rèn)參數(shù)的函數(shù)調(diào)用時(shí),可以為函數(shù)指定實(shí)參,也可不指定實(shí)參,未指定實(shí)參時(shí),函數(shù)自動(dòng)取默認(rèn)值。,16,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.4默認(rèn)參數(shù) 注意: 可以只設(shè)置部分形參具有默認(rèn)參數(shù),但使用時(shí)需注意,未設(shè)置默認(rèn)參數(shù)的參數(shù)必須給出參數(shù)值,設(shè)置默認(rèn)參數(shù)的參數(shù)可以不給出參數(shù)值,自動(dòng)取默認(rèn)值。 另:定義函數(shù)時(shí)若要設(shè)置第n個(gè)參數(shù)的默認(rèn)值,則該參數(shù)之后的所有參數(shù)均須設(shè)置默認(rèn)值,17,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.4默認(rèn)參數(shù) 調(diào)用函數(shù)時(shí),若函數(shù)第n個(gè)參數(shù)
4、是默認(rèn)參數(shù),當(dāng)調(diào)用函數(shù)需要指定該參數(shù)取非默認(rèn)值時(shí),則該參數(shù)前的所有參數(shù)都必須指定參數(shù)值。,18,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.4默認(rèn)參數(shù) 函數(shù)調(diào)用時(shí),可以為函數(shù)指定實(shí)參,也可不指定實(shí)參,未指定實(shí)參時(shí),函數(shù)自動(dòng)取默認(rèn)值。,19,3.1函數(shù)的參數(shù)及其傳遞方式,3.1.5使用const保護(hù)數(shù)據(jù) 定義函數(shù)時(shí)將函數(shù)的參數(shù)限定為const,則參數(shù)在函數(shù)體內(nèi)不可改變。任何試圖改變const限定的參數(shù)的語(yǔ)句都是錯(cuò)誤的。,這條語(yǔ)句錯(cuò)了,20,3.2深入討論函數(shù)的返回值,函數(shù)返回值由函數(shù)類型決定,若要使得函數(shù)具有有效返回值需在函數(shù)體內(nèi)使用return語(yǔ)句。,21,3.2.1返回引用的函數(shù),22,23,24
5、,3.2.1返回引用的函數(shù),#include #include using namespace std; string ,25,3.2.2返回指針的函數(shù),類型*函數(shù)名(形參) return 指針或地址; 函數(shù)結(jié)果是地址或指針,int * fun() int x; return cout*p; ,26,3.2.2返回指針的函數(shù)補(bǔ)充 說(shuō)明:new語(yǔ)句 delete語(yǔ)句 NULL New格式: 指針變量 = new 類型n; 指針變量 = new 類型(x); 指針變量 = new 類型; Delete格式: delete 指針變量; delete 指針變量; NULL表示空,表示指針未指向任何內(nèi)存
6、 new分配的內(nèi)容遇delete釋放,27,3.2深入討論函數(shù)的返回值,28,3.2深入討論函數(shù)的返回值,3.2.2返回指針的函數(shù),類型*函數(shù)名(形參) return 指針或地址; 函數(shù)結(jié)果是地址或指針,int * fun() int *p; p=new int(1); return p; main() int *p; p=fun(); cout*p; ,29,3.2.2返回指針的函數(shù),30,3.2.2返回指針的函數(shù),31,32,3.2.3返回對(duì)象的函數(shù),33,3.2深入討論函數(shù)的返回值,3.2.4返回值作為函數(shù)參數(shù),int a,b,c,d,e; coutabcd; e=max(a,max(b
7、,max(c,d);,34,定義函數(shù)時(shí), 加inline關(guān)鍵字表示該函數(shù)為內(nèi)聯(lián)函數(shù)。,3.3內(nèi)聯(lián)函數(shù),35,定義函數(shù)時(shí), 加inline關(guān)鍵字表示該函數(shù)為內(nèi)聯(lián)函數(shù)。 程序中的內(nèi)聯(lián)函數(shù)在程序編譯時(shí),將函數(shù)體替換至程序中函數(shù)調(diào)用位置,造成程序變長(zhǎng),效率提高。 注意:內(nèi)聯(lián)函數(shù)中不能出現(xiàn)循環(huán)、switch語(yǔ)句 內(nèi)聯(lián)函數(shù)一般短小,不宜過(guò)長(zhǎng) 應(yīng)在調(diào)用之前聲明或定義 在類體內(nèi)定義的函數(shù)自動(dòng)為內(nèi)聯(lián)函數(shù),3.3內(nèi)聯(lián)函數(shù),36,3.4 函數(shù)重載和默認(rèn)參數(shù) 在定義或聲明函數(shù)時(shí)對(duì)函數(shù)的形參進(jìn)行了初始化,則調(diào)用函數(shù)時(shí),若未給出對(duì)應(yīng)的實(shí)參,則參數(shù)自動(dòng)取初始化的值。這稱為函數(shù)的默認(rèn)參數(shù)。 int fun (int x=0,
8、y=0)coutxy; fun(); fun(1); fun(1,2);,37,3.4 函數(shù)重載和默認(rèn)參數(shù) 在定義或聲明函數(shù)時(shí)對(duì)函數(shù)的形參進(jìn)行了初始化,則調(diào)用函數(shù)時(shí),若未給出對(duì)應(yīng)的實(shí)參,則參數(shù)自動(dòng)取初始化的值。這稱為函數(shù)的默認(rèn)參數(shù)。 int fun(int x=0,y=0); . fun(); fun(1); fun(1,2); . int fun(int x,y)coutxy;,38,3.4函數(shù)重載和默認(rèn)參數(shù),同一個(gè)函數(shù)名實(shí)現(xiàn)多種功能,在C+中稱為多態(tài),可利用函數(shù)重載和默認(rèn)參數(shù)兩種方式實(shí)現(xiàn),39,3.4函數(shù)重載和默認(rèn)參數(shù),同一個(gè)函數(shù)名實(shí)現(xiàn)多種功能,在C+中稱為多態(tài),可利用函數(shù)重載和默認(rèn)參數(shù)兩
9、種方式實(shí)現(xiàn),定義或聲明函數(shù)時(shí),給出參數(shù)初始化值,則函數(shù)調(diào)用時(shí)若省略參數(shù),則參數(shù)取該初始化值。稱為默認(rèn)參數(shù)。,40,3.4函數(shù)重載和默認(rèn)參數(shù),同一個(gè)函數(shù)名實(shí)現(xiàn)多種功能,在C+中稱為多態(tài),可利用函數(shù)重載和默認(rèn)參數(shù)兩種方式實(shí)現(xiàn) 注意: 函數(shù)重載和默認(rèn)參數(shù)可同時(shí)使用。 若已定義默認(rèn)參數(shù)函數(shù),則不能重載參數(shù)類型相同,參數(shù)個(gè)數(shù)少于默認(rèn)參數(shù)個(gè)數(shù)的函數(shù)。,41,3.4函數(shù)重載和默認(rèn)參數(shù),同一個(gè)函數(shù)名實(shí)現(xiàn)多種功能,在C+中稱為多態(tài),可利用函數(shù)重載和默認(rèn)參數(shù)兩種方式實(shí)現(xiàn) 注意: 函數(shù)重載和默認(rèn)參數(shù)可同時(shí)使用。 若已定義默認(rèn)參數(shù)函數(shù),則不能重載參數(shù)類型相同,參數(shù)個(gè)數(shù)少于默認(rèn)參數(shù)個(gè)數(shù)的函數(shù)。參數(shù)類型不同時(shí),可以重載。
10、,42,3.5函數(shù)模板,有些函數(shù)重載時(shí)參數(shù)個(gè)數(shù)相同,只是類型不同,此時(shí)重載函數(shù)比較繁瑣,可利用函數(shù)模板實(shí)現(xiàn)。,43,3.5函數(shù)模板,有些函數(shù)重載時(shí)參數(shù)個(gè)數(shù)相同,只是類型不同,此時(shí)重載函數(shù)比較繁瑣,可利用函數(shù)模板實(shí)現(xiàn)。,44,3.5函數(shù)模板,45,3.5函數(shù)模板,函數(shù)模板定義格式:,定義函數(shù)模板后,函數(shù)調(diào)用時(shí)根據(jù)函數(shù)參數(shù)來(lái)類型來(lái)確定調(diào)用哪個(gè)版本的函數(shù)。函數(shù)執(zhí)行時(shí)確定參數(shù)類型的函數(shù)稱為模板函數(shù)。,46,3.5函數(shù)模板,此種形式調(diào)用中稱為函數(shù)模板的參數(shù) 一般可省略。Typename可替代class,47,3.5函數(shù)模板,若某函數(shù)參數(shù)類型不一致時(shí),也可定義函數(shù)模板。,48,真題,1.一個(gè)函數(shù)功能不太復(fù)
11、雜,但要求被頻繁調(diào)用,選用( ) A.內(nèi)聯(lián)函數(shù) B重載函數(shù) C遞歸函數(shù) D嵌套函數(shù) 10.包含哪種語(yǔ)句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)( ) A.循環(huán)B.變量自增自減 C.if.elseD.變量聲明 10.聲明函數(shù)為內(nèi)聯(lián)函數(shù)時(shí)所使用的關(guān)鍵字為() A.const B.inline C.short D.signed,49,真題,10.聲明函數(shù)為內(nèi)聯(lián)函數(shù)時(shí)所使用的關(guān)鍵字為() A.const B.inline C.short D.signed 2.內(nèi)聯(lián)函數(shù)的特點(diǎn)是( ) A.減少代碼量,加快訪問(wèn)速度 B.減少代碼量,減緩訪問(wèn)速度 C.增加代碼量,減緩訪問(wèn)速度 D.增加代碼量,加快訪問(wèn)速度 28.C+中使用
12、_關(guān)鍵字說(shuō)明函數(shù)為內(nèi)聯(lián)函數(shù)。,50,真題,8下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)( ) A函數(shù)體語(yǔ)句較多 B函數(shù)體語(yǔ)句較少 C函數(shù)執(zhí)行時(shí)間較短 D函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng),51,真題,在下劃線處填上缺少的部分。源程序如下 #include using namespace std; _ T fun(T x) _y; y=x*x-T(5); return y; void main() float a=2; coutfun(a); ,52,真題,53.給出下面程序的輸出結(jié)果 #includeiostream.h int main() int i=17; while(i=10) if(-i4=3)continue; else couti=i-endl; ,53,真題,54.給出下面程序的輸出結(jié)果 #include using namespace std; void main() int num=300; int void main( ) coutmax(1,7)t max(2.0,5.0)endl; coutmax(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防安全攀爬課件
- 婦產(chǎn)科健康教育與咨詢指導(dǎo)技術(shù)
- 順產(chǎn)產(chǎn)婦護(hù)理課件
- 項(xiàng)目工程管理第五章課件
- 水肌酸產(chǎn)品項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告(模板)
- 縣醫(yī)院醫(yī)療服務(wù)能力基本標(biāo)準(zhǔn)
- 縣防汛應(yīng)急預(yù)案、縣抗旱應(yīng)急預(yù)案、縣自然災(zāi)害救助應(yīng)急預(yù)案、縣處置森林火災(zāi)應(yīng)急預(yù)案
- 五年級(jí)奧數(shù)春季班第13講-概率初識(shí)
- 2025年衛(wèi)星云圖接收設(shè)備項(xiàng)目合作計(jì)劃書
- 現(xiàn)代康復(fù)治療技術(shù)考試試題含答案
- 【超星爾雅學(xué)習(xí)通】航空概論網(wǎng)課章節(jié)答案
- 獸醫(yī)傳染病學(xué)(山東聯(lián)盟)智慧樹知到答案章節(jié)測(cè)試2023年青島農(nóng)業(yè)大學(xué)
- 腸系膜脈管系統(tǒng)腫瘤的診斷
- 爆破工程技考核試卷
- GB/T 35273-2020信息安全技術(shù)個(gè)人信息安全規(guī)范
- GB 18068-2000水泥廠衛(wèi)生防護(hù)距離標(biāo)準(zhǔn)
- 教師調(diào)動(dòng)登記表(模板)
- 2022年醫(yī)院收費(fèi)員考試試題及答案
- 福建省林業(yè)行政執(zhí)法人員法律考試
- 《組織機(jī)構(gòu)代碼證》word版
- 鋼筋下料單(參考模板)
評(píng)論
0/150
提交評(píng)論