




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第5 5講講 使用函數(shù)封使用函數(shù)封裝代碼裝代碼本講學(xué)習(xí)內(nèi)容:本講學(xué)習(xí)內(nèi)容:函數(shù)及其組成函數(shù)及其組成使用函數(shù)的結(jié)構(gòu)化編程的優(yōu)點(diǎn)使用函數(shù)的結(jié)構(gòu)化編程的優(yōu)點(diǎn)如何創(chuàng)建函數(shù)如何創(chuàng)建函數(shù)如何在函數(shù)中聲明局部變量如何在函數(shù)中聲明局部變量如何從函數(shù)將值返回給程序如何從函數(shù)將值返回給程序如何給函數(shù)傳遞參數(shù)如何給函數(shù)傳遞參數(shù)5.1 函數(shù)是什么函數(shù)是什么v函數(shù)的定義v函數(shù)是一個(gè)被命名的、獨(dú)立的代碼段,它執(zhí)行特定的任務(wù),并可能給調(diào)用它的程序返回一個(gè)值。函數(shù)是什么函數(shù)是什么v函數(shù)的用法v參見(jiàn)程序ch5cube.c。5.2 自頂向下的方法自頂向下的方法v采用結(jié)構(gòu)化編程時(shí),可以選用自頂向下的方法。v程序的大多數(shù)實(shí)際工作是
2、由位于樹(shù)枝末梢的函數(shù)完成,位于“主干附件的函數(shù)主要用于引導(dǎo)程序執(zhí)行這些函數(shù)。v要求編寫(xiě)代碼之前一定要進(jìn)行規(guī)劃,預(yù)先確定程序的結(jié)構(gòu)可以節(jié)省編寫(xiě)和調(diào)試代碼的時(shí)間。5.3 函數(shù)的工作原理函數(shù)的工作原理v僅當(dāng)函數(shù)被程序的其他部分調(diào)用后,函數(shù)中的語(yǔ)句才會(huì)被執(zhí)行。v調(diào)用函數(shù)時(shí),程序可以通過(guò)一個(gè)或多個(gè)參數(shù)給它傳遞信息,然后執(zhí)行函數(shù)中的語(yǔ)句,完成設(shè)計(jì)任務(wù)。v函數(shù)中的語(yǔ)句執(zhí)行完畢后,控制權(quán)將返回給調(diào)用函數(shù)的地方。v函數(shù)能夠以返回值的方式將信息返回給程序。函數(shù)的工作原理函數(shù)的工作原理main() call func1() call func2() call func3() func1 () func2 () fu
3、nc3 () 5.4 編寫(xiě)函數(shù)編寫(xiě)函數(shù)v函數(shù)頭v函數(shù)的返回類(lèi)型v函數(shù)名v參數(shù)列表v函數(shù)體v函數(shù)原型5.4.1 函數(shù)頭函數(shù)頭v每個(gè)函數(shù)的第一行都是函數(shù)頭,函數(shù)頭由三部分組成,其中每一部分完成特定的功能。type function-name ( parm1,. )函數(shù)的返回類(lèi)型函數(shù)名參數(shù)列表5.4.2 函數(shù)的返回類(lèi)型函數(shù)的返回類(lèi)型v函數(shù)的返回類(lèi)型指定了函數(shù)返回給調(diào)用程序的數(shù)據(jù)類(lèi)型。v例如:vint func1()/* Returns a type int. */vfloat func2() /* Returns a type float. */vvoid func3() /* Returns no
4、thing. */5.4.3 函數(shù)名函數(shù)名v遵循變量名規(guī)則,可以為函數(shù)命名為任何名稱(chēng)。v在一個(gè)具體的C程序中,函數(shù)名必須唯一。v建議給函數(shù)指定一個(gè)描述其功能的名稱(chēng)。5.4.4 參數(shù)列表參數(shù)列表v函數(shù)通過(guò)參數(shù)來(lái)接受外界傳入的值,其參數(shù)類(lèi)型信息由函數(shù)頭中的參數(shù)列表提供。v例如:vlong cube(long x)vvoid func1(int x, float y, char z)vint func2(void)形參與實(shí)參形參與實(shí)參v形參parameter位于函數(shù)頭,是實(shí)參的一個(gè)占位符。函數(shù)的形參是固定的,在程序執(zhí)行期間不會(huì)變化。v實(shí)參argument是調(diào)用程序傳遞給函數(shù)的實(shí)際值。每次調(diào)用函數(shù)時(shí),
5、可以傳遞不同的參數(shù)。v關(guān)系:函數(shù)通過(guò)相應(yīng)的形參名來(lái)訪問(wèn)實(shí)參。v形式參數(shù)與實(shí)際參數(shù)的關(guān)系形式參數(shù)與實(shí)際參數(shù)的關(guān)系v形式參數(shù)在函數(shù)中是變量名形式參數(shù)在函數(shù)中是變量名,在函數(shù)調(diào)用時(shí)在函數(shù)調(diào)用時(shí),形參被分形參被分配相應(yīng)的內(nèi)存。配相應(yīng)的內(nèi)存。v實(shí)際參數(shù)是表達(dá)式負(fù)責(zé)向?qū)?yīng)的形參標(biāo)識(shí)的內(nèi)存單實(shí)際參數(shù)是表達(dá)式負(fù)責(zé)向?qū)?yīng)的形參標(biāo)識(shí)的內(nèi)存單元傳遞數(shù)據(jù)。元傳遞數(shù)據(jù)。v實(shí)參與形參必須個(gè)數(shù)相同。實(shí)參與形參必須個(gè)數(shù)相同。v對(duì)應(yīng)的形參和實(shí)參的類(lèi)型必須一致。對(duì)應(yīng)的形參和實(shí)參的類(lèi)型必須一致。v形參和實(shí)參之間的關(guān)系是形參和實(shí)參之間的關(guān)系是: 單向的值的傳遞單向的值的傳遞主調(diào)函數(shù)中有如下語(yǔ)句主調(diào)函數(shù)中有如下語(yǔ)句:scanf(%d,
6、%d,&a,&b);m=max(a,b+3);如果輸入如果輸入6,2函數(shù)函數(shù)intmax(inta,intb)形參形參a得到第一個(gè)實(shí)際參數(shù)得到第一個(gè)實(shí)際參數(shù)a的值的值6形參形參b得到第二個(gè)實(shí)際參數(shù)得到第二個(gè)實(shí)際參數(shù)b+3的值的值5例如例如形參與實(shí)參的區(qū)別形參與實(shí)參的區(qū)別參見(jiàn)程序ch5list1.c。形參與實(shí)參形參與實(shí)參v第一次調(diào)用 z = half_of(x);v float half_of(float k)3.5實(shí)參形參v第二次調(diào)用 z = half_of(y);v float half_of(float k)65.11實(shí)參形參5.4.5 函數(shù)體函數(shù)體v局部變量v函數(shù)的語(yǔ)句v
7、返回值1. 局部變量局部變量v在函數(shù)體中聲明的變量,稱(chēng)之為局部變量,該變量是該函數(shù)私有的。v聲明局部變量的方式和其他變量相同,可以聲明任何類(lèi)型的變量。int func1(int y)int a, b = 10;float rate;double cost = 12.55;/* function code goes here */演示局部變量演示局部變量參見(jiàn)程序ch5var.c。2. 函數(shù)的語(yǔ)句函數(shù)的語(yǔ)句v函數(shù)幾乎可以包含任何語(yǔ)句,在函數(shù)中唯一不能做的是定義另一個(gè)函數(shù),但可以使用其他任何語(yǔ)句,包括調(diào)用函數(shù)。3. 返回一個(gè)值返回一個(gè)值v要從函數(shù)返回一個(gè)值,可以使用關(guān)鍵字return,并在后面加上一
8、個(gè)表達(dá)式。int func1(int var)int x;/* Function code goes here */return x;返回一個(gè)值返回一個(gè)值v函數(shù)可以包含多條return語(yǔ)句,但只有一條被執(zhí)行的return語(yǔ)句對(duì)程序有影響。v參見(jiàn)程序ch5return.c。5.4.6 函數(shù)原型函數(shù)原型v使用用戶定義的每個(gè)函數(shù),程序都應(yīng)包含一個(gè)原型。其功能是將有關(guān)函數(shù)的信息告知編譯器。v函數(shù)原型和函數(shù)頭相同,只是后面多了一個(gè)分號(hào)。5.5 將參數(shù)傳遞給函數(shù)將參數(shù)傳遞給函數(shù)v要將參數(shù)傳遞給函數(shù),可將它們放在函數(shù)名的后面,并用圓括號(hào)括起。v參數(shù)的數(shù)目與類(lèi)型必須同函數(shù)頭和函數(shù)原型中的形參匹配。int a,
9、b,c;函數(shù)調(diào)用func1(a, b, c);函數(shù)頭函數(shù)頭 void func1(int x, int y, int z)將參數(shù)傳遞給函數(shù)將參數(shù)傳遞給函數(shù)v每個(gè)參數(shù)都是可以任何合法的表達(dá)式:常量、變量、數(shù)學(xué)表達(dá)式,甚至可以是另一個(gè)函數(shù)返回一個(gè)值的函數(shù))。例如:half()、square()和third()均為有返回值的函數(shù),則可以這樣編寫(xiě)代碼:x half(third(square(half(y);5.6 調(diào)用函數(shù)調(diào)用函數(shù)v調(diào)用函數(shù)的方式有兩種:v對(duì)于任何函數(shù),都可以使用其名稱(chēng)和參數(shù)列表進(jìn)行調(diào)用。v僅適用于有返回值的函數(shù),即為合法的表達(dá)式,可用于任何能使用表達(dá)式的地方。wait(12);pri
10、ntf(“Half of %d is %d”, x, half_of(x);a = half_of(x);if( half_of(x) 10)遞歸遞歸v遞歸指的是函數(shù)直接或間接調(diào)用自己。v間接遞歸指的是一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù),而后者又調(diào)用前者。使用遞歸函數(shù)計(jì)算階乘使用遞歸函數(shù)計(jì)算階乘例如,x的階乘表示為x!,計(jì)算方法如下: x! = x * (x-1) * (x-2) * (x-3)* (2) * 1然而,也可以這樣計(jì)算x!: x! = x * (x-1)!然后,可以使用同樣的方法計(jì)算x-1的階乘: (x-1)! = (x-1) * (x-2)!可以不斷地以遞歸的方式計(jì)算下去,直到1。參見(jiàn)程序ch5recurse.c。5.7 函數(shù)的位置函數(shù)的位置v就目前水平而言,函數(shù)定義位于main()函數(shù)所在的源代碼文件中,并位于main()函數(shù)的后面。函數(shù)原型函數(shù)原型void func1(int x, int y, int z);int mainvoid)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)場(chǎng)柴油發(fā)電機(jī)臨時(shí)供電方案設(shè)計(jì)與實(shí)施細(xì)節(jié)
- 機(jī)電養(yǎng)護(hù)監(jiān)理管理辦法
- 生態(tài)文明建設(shè)教育課程體系構(gòu)建與教學(xué)設(shè)計(jì)研究
- 數(shù)字仿真:產(chǎn)品創(chuàng)新加速器技術(shù)探索
- 煤系巷道頂板疊加理論與有效錨固層厚度應(yīng)用研究
- 醫(yī)療集團(tuán)資產(chǎn)管理辦法
- 熱紅外遙感勘探-洞察及研究
- 音樂(lè)傳播視角下高職學(xué)生合唱藝術(shù)審美能力培養(yǎng)策略研究
- 全員安全生產(chǎn)責(zé)任制清單模板
- 關(guān)于安全生產(chǎn)會(huì)議的法律規(guī)定
- 【信得科技】2025豬細(xì)菌病防控手冊(cè)
- 罐體制作合同協(xié)議
- 電動(dòng)車(chē)維修與保養(yǎng)考核試卷
- “住改商”登記利害關(guān)系業(yè)主同意證明(參考樣本)
- 2025-2030中國(guó)氣象服務(wù)行業(yè)市場(chǎng)前景趨勢(shì)及競(jìng)爭(zhēng)格局與投資研究報(bào)告
- 外研版六年級(jí)上冊(cè)英語(yǔ)全冊(cè)教學(xué)課件
- 廣西壯族自治區(qū)南寧市2024-2025學(xué)年九年級(jí)上學(xué)期期末道德與法治試題(含答案)
- 企業(yè)迎檢工作要點(diǎn)
- 2025年度汽車(chē)維修配件股份合作協(xié)議4篇
- 2022年河北省特種設(shè)備作業(yè)安全管理人員證考試題庫(kù)(含答案)
- 以客戶為中心的銀行服務(wù)體驗(yàn)優(yōu)化
評(píng)論
0/150
提交評(píng)論