freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第6章過程封裝--函數(shù)-文庫吧

2025-08-25 15:49 本頁面


【正文】 ? C++語言規(guī)定,數(shù)組名是數(shù)組的起始地址 ? 參數(shù)傳遞時(shí),實(shí)際參數(shù)是數(shù)組名,形式參數(shù)也是數(shù)組名 ? 按照值傳遞,當(dāng)用實(shí)際參數(shù) score調(diào)用函數(shù) average時(shí),是用 score 初始化形式參數(shù)數(shù)組 array。如 score 的首地址為 1000,在函數(shù)中形參數(shù)組 array的首地址也為 1000。 ? 形式參數(shù)和實(shí)際參數(shù)是同一數(shù)組?。。? 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 26 數(shù)組作為函數(shù)的參數(shù) ? 在函數(shù)中并沒有定義新的數(shù)組 ? 對形式參數(shù)數(shù)組指定規(guī)模是沒有意義的 ? 形式參數(shù)數(shù)組不需要指定大小,所以方括號中為空 ? 函數(shù)如何知道數(shù)組的規(guī)模?用另一個(gè)整型參數(shù)表示 ? 總結(jié):數(shù)組傳遞需要兩個(gè)參數(shù),數(shù)組名和數(shù)組規(guī)模 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 27 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 28 默認(rèn)參數(shù) ? 對于某些函數(shù),程序往往會用一些固定的值去調(diào)用它 .例如對于以某種數(shù)制輸出整型數(shù)的函數(shù) print: void print(int value, int base)。 在大多數(shù)情況下都是以十進(jìn)制輸出,因此 base的值總是為 10。 ? C++在定義或聲明函數(shù)時(shí)可以為函數(shù)的某個(gè)參數(shù)指定默認(rèn)值。當(dāng)調(diào)用函數(shù)時(shí)沒有為它指定實(shí)際參數(shù)時(shí),系統(tǒng)自動(dòng)將默認(rèn)值賦給形式參數(shù)。例如,可以將 print函數(shù)聲明為 void print(int value, int base=10)。 調(diào)用 print(20) 等價(jià)于 print(20, 10) 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 29 帶有默認(rèn)參數(shù)的函數(shù)的使用 C++在說明函數(shù)原型時(shí),可以為一個(gè)或多個(gè)參數(shù)指定缺省值。調(diào)用此函數(shù)時(shí),若缺省某一參數(shù), C++自動(dòng)以缺省值作為此參數(shù)的值。如: int special(int x=2, float y=) 調(diào)用時(shí)可用: special(5,) //x=5。 y= special(6) //x=6。 y= special( ) //x=2。 y= 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 30 帶有默認(rèn)參數(shù)的函數(shù) —注意事項(xiàng) ? 缺省參數(shù)無論有幾個(gè),都必須放在參數(shù)序列的最后, 例如: Int SaveName (char *first, char second = ―‖,char *third = ―‖, char *fouth = ―‖)。 ? 在函數(shù)調(diào)用時(shí),若某個(gè)參數(shù)省略,則其后的參數(shù)皆應(yīng)省略而取其缺省值 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 31 帶有默認(rèn)參數(shù)的函數(shù) —注意事項(xiàng) ? 對參數(shù)默認(rèn)值的指定只有在函數(shù)聲明處有意義。因?yàn)楹瘮?shù)的默認(rèn)值是提供給調(diào)用者使用的。 ? 在不同的源文件中,可以對函數(shù)的參數(shù)指定不同的默認(rèn)值。例如對于上面的 print函數(shù),如果在某一個(gè)功能模塊中輸出的大多是十進(jìn)制數(shù),那么在此功能對應(yīng)的源文件中可以指定 base的默認(rèn)值為10。如果在另一個(gè)功能最模塊中經(jīng)常要以二進(jìn)制輸出,那么在此功能模塊對應(yīng)的源文件中可以指定默認(rèn)值是 2。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 32 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 33 內(nèi)聯(lián)函數(shù) ? 目的是為了提高執(zhí)行效率。 ? 對于任何內(nèi)聯(lián)函數(shù),編譯器在符號表里放入函數(shù)的聲明(包括名字、參數(shù)類型、返回值類型)。如果編譯器沒有發(fā)現(xiàn)內(nèi)聯(lián)函數(shù)存在錯(cuò)誤,那么該函數(shù)的代碼也被放入符號表里。在調(diào)用內(nèi)聯(lián)函數(shù)時(shí),編譯器直接用內(nèi)聯(lián)函數(shù)的代碼替換函數(shù)調(diào)用,于是省去了函數(shù)調(diào)用的開銷。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 34 內(nèi)聯(lián)函數(shù) ? 內(nèi)聯(lián)函數(shù)的定義:在函數(shù)頭部前加保留詞 inline include inline float cube(float s) { return s*s*s。 } int main() { float side。 cin side。 cout cube(side) endls。 return 0。 } 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 35 慎用內(nèi)聯(lián)函數(shù) ? 內(nèi)聯(lián)以代碼復(fù)制 (膨脹 )為代價(jià),省去了函數(shù)調(diào)用的開銷,提高函數(shù)的執(zhí)行效率。如果相比于執(zhí)行函數(shù)體內(nèi)代碼的時(shí)間,函數(shù)調(diào)用的開銷可以忽略不計(jì),那么效率的收獲會很小。 ? 以下情況不宜用內(nèi)聯(lián) : ?如果函數(shù)體內(nèi)的代碼比較長,使用內(nèi)聯(lián)將導(dǎo)致內(nèi)存消耗代價(jià)較高。 ?如果函數(shù)體內(nèi)出現(xiàn)循環(huán),那么執(zhí)行函數(shù)體內(nèi)代碼的時(shí)間要比函數(shù)調(diào)用的開銷大。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 36 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 37 重載函數(shù) ? 在傳統(tǒng)的 C語言中,不允許出現(xiàn)同名函數(shù)。當(dāng)要求寫一組功能類似、參數(shù)類型或參數(shù)個(gè)數(shù)不同的函數(shù)時(shí),必須給它們?nèi)〔煌暮瘮?shù)名 ? 例如某個(gè)程序要求找出一組數(shù)據(jù)中的最大值,這組數(shù)據(jù)最多有 5個(gè)數(shù)據(jù)。我們必須寫四個(gè)函數(shù):求兩個(gè)值中的最大值、求三個(gè)值中的最大值、求四個(gè)值中的最大值和求五個(gè)值中的最大值。我們必須為這四個(gè)函數(shù)取四個(gè)不同的函數(shù)名,例如: max2, max3, max4和 max5。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 38 函數(shù)重載 ? 使參數(shù)個(gè)數(shù)不同、參數(shù)類型不同或兩者兼而有之的兩個(gè)以上的函數(shù)取相同的函數(shù)名 ? 如 int max(int a1, int a2)。 int max(int a1, int a2, int a3)。 int max(int a1, int a2, int a3, int a4)。 int max(int a1, int a2, int a3, int a4, int a5)。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 39 函數(shù)重載的實(shí)現(xiàn) ? 由編譯器確定某一次函數(shù)調(diào)用到底是調(diào)用了哪一個(gè)具體的函數(shù)。這個(gè)過程稱之為綁定( binding,又稱為聯(lián)編或捆綁)。 ? 編譯器首先會為這一組重載函數(shù)中的每個(gè)函數(shù)取一個(gè)不同的內(nèi)部名字。當(dāng)發(fā)生函數(shù)調(diào)用時(shí),編譯器根據(jù)實(shí)際參數(shù)和形式參數(shù)的匹配情況確定具體調(diào)用的是那個(gè)函數(shù),將這個(gè)函數(shù)的內(nèi)部函數(shù)名取代重載的函數(shù)名。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 40 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 41 函數(shù)模板 ? 如果一組重載函數(shù)僅僅是參數(shù)的類型不一樣,程序的邏輯完全一樣,那么這一組重載函數(shù)可以寫成一個(gè)函數(shù)模板。 ? 所謂的函數(shù)模板就是實(shí)現(xiàn)類型的參數(shù)化(泛型化),即把函數(shù)中某些形式參數(shù)的類型定義成參數(shù),稱為模板參數(shù) ? 在函數(shù)調(diào)用時(shí),編譯器根據(jù)實(shí)際參數(shù)的類型確定模板參數(shù)的值,生成不同的模板函數(shù)。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 42 函數(shù)模板的定義 ? 一 般的定義形式 template模板形式參數(shù)表 返回類型 FunctionName(形式參數(shù)表 ) { //函數(shù)定義體 } ? 模板形式參數(shù)表可以包含基本數(shù)據(jù)類型,也可以包含類類型(需加前綴 class) templateclass T T max(T a, T b) { return ab ? a : b; } 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 43 函數(shù)模板的使用 ? maxNum = max(3, 7)。 ? maxChar = max(?z‘, ?a‘)。 ? maxDouble = max(, )。 ? 函數(shù)模板的實(shí)例化: ?根據(jù)實(shí)際參數(shù)確定模板參數(shù)的值 ?將模板參數(shù)的值代入函數(shù)模板,形成一個(gè)真正的函數(shù) 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 44 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 45 標(biāo)識符的作用域 ? 一個(gè)標(biāo)識符能被存取的程序部分,稱為標(biāo)識符的作用域 ? 標(biāo)識符的作用域與程序塊有關(guān)。所謂的程序塊是帶有聲明的復(fù)合語句 ? 如右框中有兩塊 Int main(void) { int a = 2, b = 3。 cout a b。 { int a = 4。 cout a b。 } cout a b。 } 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 46 標(biāo)識符的作用域 —續(xù) ? 在塊中說明的標(biāo)識符是 局部 的,僅能在本塊中和內(nèi)部的塊中存取。 ? 當(dāng)內(nèi)部塊與外部塊有同名標(biāo)識符時(shí),在內(nèi)部塊中屏蔽外部塊的同名標(biāo)識符。 ? 在一個(gè)函數(shù)中,我們不能存取主調(diào)程序的變量,即使知道該變量的名字。 ? 函數(shù)參數(shù)對該函數(shù)也是局部的,可以將它看成在塊內(nèi),即函數(shù)體內(nèi)說明的說明的變量。 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 47 局部變量和全局變量 ? 局部變量:在塊內(nèi)定義的變量稱為局部變量,即使是 main函數(shù)中定義的變量也是局部的。 ? 全局變量:在所有的函數(shù)外面定義的變量稱為全局變量 ? 作用范圍:從定義位置到文件結(jié)束。如在作用范圍外的函數(shù)要使用此變量,用關(guān)鍵詞 extern在函數(shù)內(nèi)說明此全局變量。 ? 作用:方便函數(shù)間的數(shù)據(jù)傳遞 ? 請寫出下列程序的執(zhí)行結(jié)果: 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 48 int p = 1, q = 5, r=3。 int f1() {int p = 3, r = 2。 q=p+q+r。 cout ―f1: p,q,r=― p q r。 } int f2() { p=p+q+r。 cout ―f2: p,q,r=― p q r。 } int f3() {int q。 r = 2*r。 q=r+p。 cout ―f3: p,q,r=― p q r。 } main() {f3()。 cout ―after f3: p,q,r=‖ p q r。 f1()。 cout ―after f1: p,q,r=― p q r。 f2()。 cout ―after f2: p,q,r=‖ p q r。 } 結(jié)果: f3: p,q,r=1 7 6 after f3: p,q,r=1 5 6 f1: p,q,r=3 10 2 after f1:p,q,r=1 10 6 f2: p,q,r=17 10 6 after f2: p,q,r=17 10 6 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 49 全局變量的使用說明 ? 全局變量破壞了模塊化,建議盡量少使用 ? 當(dāng)全局變量和局部變量同名時(shí),在局部變量的作用范圍中全局變量被屏蔽。 ? 全局變量的使用將在模塊化設(shè)計(jì)中詳細(xì)介紹 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 50 第 6章 過程封裝--函數(shù) ? 函數(shù) ? 自己編寫函數(shù) ? 函數(shù)的使用 ? 數(shù)組作為參數(shù) ? 帶默認(rèn)值的函數(shù) ? 內(nèi)聯(lián)函數(shù) ? 重載函數(shù) ? 函數(shù)模版 ? 變量的作用域 ? 變量的存儲類別 ? 遞歸函數(shù) ? 基于遞歸的算法 《 程序設(shè)計(jì) 》 程序設(shè)計(jì) 51
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1