版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第5 5講講 使用函數(shù)封使用函數(shù)封裝代碼裝代碼本講學(xué)習(xí)內(nèi)容:本講學(xué)習(xí)內(nèi)容:函數(shù)及其組成函數(shù)及其組成使用函數(shù)的結(jié)構(gòu)化編程的優(yōu)點使用函數(shù)的結(jié)構(gòu)化編程的優(yōu)點如何創(chuàng)建函數(shù)如何創(chuàng)建函數(shù)如何在函數(shù)中聲明局部變量如何在函數(shù)中聲明局部變量如何從函數(shù)將值返回給程序如何從函數(shù)將值返回給程序如何給函數(shù)傳遞參數(shù)如何給函數(shù)傳遞參數(shù)5.1 函數(shù)是什么函數(shù)是什么v函數(shù)的定義v函數(shù)是一個被命名的、獨立的代碼段,它執(zhí)行特定的任務(wù),并可能給調(diào)用它的程序返回一個值。函數(shù)是什么函數(shù)是什么v函數(shù)的用法v參見程序ch5cube.c。5.2 自頂向下的方法自頂向下的方法v采用結(jié)構(gòu)化編程時,可以選用自頂向下的方法。v程序的大多數(shù)實際工作是
2、由位于樹枝末梢的函數(shù)完成,位于“主干附件的函數(shù)主要用于引導(dǎo)程序執(zhí)行這些函數(shù)。v要求編寫代碼之前一定要進(jìn)行規(guī)劃,預(yù)先確定程序的結(jié)構(gòu)可以節(jié)省編寫和調(diào)試代碼的時間。5.3 函數(shù)的工作原理函數(shù)的工作原理v僅當(dāng)函數(shù)被程序的其他部分調(diào)用后,函數(shù)中的語句才會被執(zhí)行。v調(diào)用函數(shù)時,程序可以通過一個或多個參數(shù)給它傳遞信息,然后執(zhí)行函數(shù)中的語句,完成設(shè)計任務(wù)。v函數(shù)中的語句執(zhí)行完畢后,控制權(quán)將返回給調(diào)用函數(shù)的地方。v函數(shù)能夠以返回值的方式將信息返回給程序。函數(shù)的工作原理函數(shù)的工作原理main() call func1() call func2() call func3() func1 () func2 () fu
3、nc3 () 5.4 編寫函數(shù)編寫函數(shù)v函數(shù)頭v函數(shù)的返回類型v函數(shù)名v參數(shù)列表v函數(shù)體v函數(shù)原型5.4.1 函數(shù)頭函數(shù)頭v每個函數(shù)的第一行都是函數(shù)頭,函數(shù)頭由三部分組成,其中每一部分完成特定的功能。type function-name ( parm1,. )函數(shù)的返回類型函數(shù)名參數(shù)列表5.4.2 函數(shù)的返回類型函數(shù)的返回類型v函數(shù)的返回類型指定了函數(shù)返回給調(diào)用程序的數(shù)據(jù)類型。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ù)命名為任何名稱。v在一個具體的C程序中,函數(shù)名必須唯一。v建議給函數(shù)指定一個描述其功能的名稱。5.4.4 參數(shù)列表參數(shù)列表v函數(shù)通過參數(shù)來接受外界傳入的值,其參數(shù)類型信息由函數(shù)頭中的參數(shù)列表提供。v例如:vlong cube(long x)vvoid func1(int x, float y, char z)vint func2(void)形參與實參形參與實參v形參parameter位于函數(shù)頭,是實參的一個占位符。函數(shù)的形參是固定的,在程序執(zhí)行期間不會變化。v實參argument是調(diào)用程序傳遞給函數(shù)的實際值。每次調(diào)用函數(shù)時,
5、可以傳遞不同的參數(shù)。v關(guān)系:函數(shù)通過相應(yīng)的形參名來訪問實參。v形式參數(shù)與實際參數(shù)的關(guān)系形式參數(shù)與實際參數(shù)的關(guān)系v形式參數(shù)在函數(shù)中是變量名形式參數(shù)在函數(shù)中是變量名,在函數(shù)調(diào)用時在函數(shù)調(diào)用時,形參被分形參被分配相應(yīng)的內(nèi)存。配相應(yīng)的內(nèi)存。v實際參數(shù)是表達(dá)式負(fù)責(zé)向?qū)?yīng)的形參標(biāo)識的內(nèi)存單實際參數(shù)是表達(dá)式負(fù)責(zé)向?qū)?yīng)的形參標(biāo)識的內(nèi)存單元傳遞數(shù)據(jù)。元傳遞數(shù)據(jù)。v實參與形參必須個數(shù)相同。實參與形參必須個數(shù)相同。v對應(yīng)的形參和實參的類型必須一致。對應(yīng)的形參和實參的類型必須一致。v形參和實參之間的關(guān)系是形參和實參之間的關(guān)系是: 單向的值的傳遞單向的值的傳遞主調(diào)函數(shù)中有如下語句主調(diào)函數(shù)中有如下語句:scanf(%d,
6、%d,&a,&b);m=max(a,b+3);如果輸入如果輸入6,2函數(shù)函數(shù)intmax(inta,intb)形參形參a得到第一個實際參數(shù)得到第一個實際參數(shù)a的值的值6形參形參b得到第二個實際參數(shù)得到第二個實際參數(shù)b+3的值的值5例如例如形參與實參的區(qū)別形參與實參的區(qū)別參見程序ch5list1.c。形參與實參形參與實參v第一次調(diào)用 z = half_of(x);v float half_of(float k)3.5實參形參v第二次調(diào)用 z = half_of(y);v float half_of(float k)65.11實參形參5.4.5 函數(shù)體函數(shù)體v局部變量v函數(shù)的語句v
7、返回值1. 局部變量局部變量v在函數(shù)體中聲明的變量,稱之為局部變量,該變量是該函數(shù)私有的。v聲明局部變量的方式和其他變量相同,可以聲明任何類型的變量。int func1(int y)int a, b = 10;float rate;double cost = 12.55;/* function code goes here */演示局部變量演示局部變量參見程序ch5var.c。2. 函數(shù)的語句函數(shù)的語句v函數(shù)幾乎可以包含任何語句,在函數(shù)中唯一不能做的是定義另一個函數(shù),但可以使用其他任何語句,包括調(diào)用函數(shù)。3. 返回一個值返回一個值v要從函數(shù)返回一個值,可以使用關(guān)鍵字return,并在后面加上一
8、個表達(dá)式。int func1(int var)int x;/* Function code goes here */return x;返回一個值返回一個值v函數(shù)可以包含多條return語句,但只有一條被執(zhí)行的return語句對程序有影響。v參見程序ch5return.c。5.4.6 函數(shù)原型函數(shù)原型v使用用戶定義的每個函數(shù),程序都應(yīng)包含一個原型。其功能是將有關(guān)函數(shù)的信息告知編譯器。v函數(shù)原型和函數(shù)頭相同,只是后面多了一個分號。5.5 將參數(shù)傳遞給函數(shù)將參數(shù)傳遞給函數(shù)v要將參數(shù)傳遞給函數(shù),可將它們放在函數(shù)名的后面,并用圓括號括起。v參數(shù)的數(shù)目與類型必須同函數(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每個參數(shù)都是可以任何合法的表達(dá)式:常量、變量、數(shù)學(xué)表達(dá)式,甚至可以是另一個函數(shù)返回一個值的函數(shù))。例如:half()、square()和third()均為有返回值的函數(shù),則可以這樣編寫代碼:x half(third(square(half(y);5.6 調(diào)用函數(shù)調(diào)用函數(shù)v調(diào)用函數(shù)的方式有兩種:v對于任何函數(shù),都可以使用其名稱和參數(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間接遞歸指的是一個函數(shù)調(diào)用另一個函數(shù),而后者又調(diào)用前者。使用遞歸函數(shù)計算階乘使用遞歸函數(shù)計算階乘例如,x的階乘表示為x!,計算方法如下: x! = x * (x-1) * (x-2) * (x-3)* (2) * 1然而,也可以這樣計算x!: x! = x * (x-1)!然后,可以使用同樣的方法計算x-1的階乘: (x-1)! = (x-1) * (x-2)!可以不斷地以遞歸的方式計算下去,直到1。參見程序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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《證據(jù)習(xí)題刑訴法》課件
- 江蘇省鎮(zhèn)江一中等2025屆高考考前模擬英語試題含解析
- 14.1《故都的秋》課件 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 2025屆山東省威海市乳山一中高考沖刺押題(最后一卷)數(shù)學(xué)試卷含解析
- 2025屆山東省微山二中高考數(shù)學(xué)三模試卷含解析
- 2025屆上海市虹口區(qū)復(fù)興高中高考考前模擬數(shù)學(xué)試題含解析
- 10.1《勸學(xué)》課件 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊-3
- 湖南省邵陽市邵東縣創(chuàng)新實驗學(xué)校2025屆高三第三次模擬考試英語試卷含解析
- 河南省駐馬店市2025屆高考考前模擬數(shù)學(xué)試題含解析
- 全國普通高等學(xué)校招生統(tǒng)一考試2025屆高考語文五模試卷含解析
- MOOC 英文技術(shù)寫作-東南大學(xué) 中國大學(xué)慕課答案
- JGJ_T231-2021建筑施工承插型盤扣式鋼管腳手架安全技術(shù)標(biāo)準(zhǔn)(高清-最新版)
- 畢業(yè)論文(設(shè)計)除雪車工作裝置設(shè)計
- 交通工程精細(xì)化施工質(zhì)量控制及驗收標(biāo)準(zhǔn)
- 鏡片加工知識之四研磨
- 核電站1E級電氣設(shè)備鑒定標(biāo)準(zhǔn)技術(shù)經(jīng)驗
- 乒乓球中的力學(xué)原理PPT課件
- 激光原理與激光技術(shù)習(xí)題全解(北工大)
- 中央空調(diào)設(shè)備運行管理方案課案
- 預(yù)算單位財務(wù)服務(wù)平臺-出納管理操作手冊
- 在全市裝備制造業(yè)現(xiàn)場推進(jìn)會上的講話
評論
0/150
提交評論