C語言程序設(shè)計課件第07章_第1頁
C語言程序設(shè)計課件第07章_第2頁
C語言程序設(shè)計課件第07章_第3頁
C語言程序設(shè)計課件第07章_第4頁
C語言程序設(shè)計課件第07章_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章函數(shù)本章學(xué)習(xí)目標(biāo)重點掌握函數(shù)的定義與調(diào)用。理解函數(shù)參數(shù)的傳遞機(jī)制---傳值調(diào)用和傳址調(diào)用。理解變量存儲類型的概念及各種存儲類型變量的生存期和有效范圍。了解函數(shù)的嵌套調(diào)用與遞歸調(diào)用。

重點理解、掌握數(shù)組作為函數(shù)參數(shù)。7.1函數(shù)的定義7.2函數(shù)的調(diào)用[Return]C語言程序是由函數(shù)組成的,函數(shù)是一個能獨(dú)立完成一定功能的程序段。

C語言對函數(shù)的規(guī)定:(1)一個源程序文件由一個或多個函數(shù)組成。(2)一個c程序由一個或多個源程序文件組成。(3)c程序的執(zhí)行從main函數(shù)開始到main()函數(shù)結(jié)束。(4)所有函數(shù)都是平行的,函數(shù)不能嵌套定義。(5)函數(shù)按使用角度分:標(biāo)準(zhǔn)函數(shù)、自定義函數(shù),按形式分:無參函數(shù)、有參函數(shù)。7.1函數(shù)的定義1.函數(shù)調(diào)用的一般形式類型說明符函數(shù)名(形參類型形參名,形參類型形參名,…,形參類型形參名)

{聲明部分

語句

return語句

}函數(shù)首部主要由三部分構(gòu)成:

(1)

類型說明符為函數(shù)類型,取決于返回值的類型。

(2)

函數(shù)名的命名規(guī)則等同變量名的命名規(guī)則。

(3)

在函數(shù)定義中,小括弧中的參數(shù)稱之為形參,定義時指明類型,形參與形參之間用逗號隔開。函數(shù)體主要由三部分構(gòu)成:

(1)聲明部分,定義一些變量,用以實現(xiàn)該函數(shù)的功能。

(2)若干語句,實現(xiàn)該函數(shù)的功能。

(3)return語句,帶回一個返回值,返回值的類型與函數(shù)類型要一致。2.函數(shù)定義的一些表現(xiàn)形式

(1)無參函數(shù)的定義形式:

類型說明符函數(shù)名(){聲明部分語句}

“類型說明符”為函數(shù)的類型,即函數(shù)返回值的類型,可以是整型、實型等類型;“函數(shù)名”的命名規(guī)則同變量名;“小括弧”是空的,沒有任何參數(shù);“大括弧”是函數(shù)體,實現(xiàn)該函數(shù)的功能。(2)有參函數(shù)的定義形式:

類型說明符函數(shù)名(形參列表)

{聲明部分

語句

“小括弧”中是形參,可以有一個,也可以有多個。函數(shù)體中最后一個語句通常是return語句,其作用是帶回一個返回值。(3)空函數(shù):

類型說明符函數(shù)名()

{}

“小括弧”中是空的;“大括弧”中也是空的。此函數(shù)沒有任何功能,只是占一個位置而已。這樣做的好處是將來擴(kuò)充新功能方便。[Return]1.函數(shù)調(diào)用的一般形式:函數(shù)名(實參列表);函數(shù)調(diào)用時,小括弧中的參數(shù)稱之為實參。形式為:

實參1,實參2,……

7.2函數(shù)的調(diào)用7.2.1

函數(shù)調(diào)用的一般形式[Return]2.C程序的一般結(jié)構(gòu)

形式一:函數(shù)類型函數(shù)名(形參列表)/*函數(shù)定義*/{函數(shù)體

return語句}main(){語句函數(shù)名(實參列表);/*函數(shù)調(diào)用*/

語句}形式二:

函數(shù)類型函數(shù)名(形參列表);/*函數(shù)說明*/main(){語句函數(shù)名(實參列表);/*函數(shù)調(diào)用*/

語句}函數(shù)類型函數(shù)名(形參列表)/*函數(shù)定義*/{函數(shù)體

return語句}函數(shù)聲明語句的形式為:

函數(shù)類型函數(shù)名(形參列表);※注意:函數(shù)的書寫位置可以是隨意的,但是主調(diào)函數(shù)如果在被調(diào)函數(shù)前面出現(xiàn),就像形式二,這時就要有函數(shù)聲明語句。[Return]7.2.2

函數(shù)間的參數(shù)傳遞1.形式參數(shù)和實際參數(shù)函數(shù)的參數(shù)分為形參和實參兩種,作用是實現(xiàn)數(shù)據(jù)傳送。形參出現(xiàn)在函數(shù)定義中,只能在該函數(shù)體內(nèi)使用。發(fā)生函數(shù)調(diào)用時,調(diào)用函數(shù)把實參的值復(fù)制1份,傳送給被調(diào)用函數(shù)的形參,從而實現(xiàn)調(diào)用函數(shù)向被調(diào)用函數(shù)的數(shù)據(jù)傳送。

函數(shù)間數(shù)據(jù)傳遞的過程:

(1)

函數(shù)調(diào)用時,主調(diào)函數(shù)中的實參,將值傳遞給被調(diào)函數(shù)的對應(yīng)的形參。

(2)

被調(diào)函數(shù)對傳入的值,按函數(shù)的設(shè)計要求對數(shù)據(jù)進(jìn)行加工處理。

(3)

被調(diào)函數(shù)處理完成后,將處理結(jié)果通過return語句返回給主調(diào)函數(shù)。2.函數(shù)的返回值

(1)

函數(shù)的返回值是通過函數(shù)中的return語句獲得的。return語句將被調(diào)用函數(shù)中的一個確定值帶回主調(diào)函數(shù)中去。(2)

函數(shù)值的類型。既然函數(shù)有返回值,這個值當(dāng)然應(yīng)屬于某一個確定的類型,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。(3)

如果函數(shù)值的類型和return語句中表達(dá)式的值不一致,則以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù),可以自動進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。(4)

如果被調(diào)函數(shù)中沒有return語句,函數(shù)并不是不帶回值,而是帶回一個不確定的、用戶可能不希望得到的函數(shù)值。(5)

為了明確表示“不帶回值”,應(yīng)該用“void”定義“無類型”(或稱“空類型”)。

[Return]7.2.3

函數(shù)調(diào)用的方式

按函數(shù)在程序中出現(xiàn)的位置來分,可以有以下3種函數(shù)調(diào)用方式。(1)函數(shù)語句把函數(shù)調(diào)用作為一個語句。不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。(2)函數(shù)表達(dá)式

函數(shù)出現(xiàn)在一個表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運(yùn)算。

例如:

z=5*max(x,y);

函數(shù)max是表達(dá)式的一部分,它的值乘5再賦給z。(3)函數(shù)參數(shù)函數(shù)調(diào)用作為一個函數(shù)的實參。例如:

m=max(x,max(y,z));

其中max(y,z)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實參。m的值是x,y,z三者中最大者。又如:

printf(“%d”,max(x,y));

也是把max(x,y)作為printf函數(shù)的一個參數(shù)。[Return]7.2.4

函數(shù)的聲明

如果使用用戶自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)在同一個文件中,一般應(yīng)該在文件的開頭或在主調(diào)函數(shù)中對被調(diào)函數(shù)的類型進(jìn)行聲明,這種類型聲明的一般形式為:返回值的類型名函數(shù)名();C語言規(guī)定,在以下幾種情況下可以不用在調(diào)用函數(shù)前對被調(diào)用函數(shù)作原型聲明。(1)如果函數(shù)的值(函數(shù)的返回值)是整型或字符型,可以不必進(jìn)行聲明,系統(tǒng)對它們自動按整型聲明。(2)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不必加以聲明,因為編譯系統(tǒng)已經(jīng)預(yù)先知道了已定義的函數(shù),會自動處理的。(3)如果在所有函數(shù)定義之前,在文件的開頭或在函數(shù)的外部已聲明了函數(shù)原型,則在各個主調(diào)函數(shù)中不必對所調(diào)用的函數(shù)再作原型聲明。[Return]7.2.5

函數(shù)的遞歸調(diào)用1.什么是遞歸調(diào)用

函數(shù)的遞歸調(diào)用是指,一個函數(shù)在它的函數(shù)體內(nèi),直接或間接地調(diào)用它自身。C語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,調(diào)用函數(shù)又是被調(diào)用函數(shù),執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進(jìn)入新的一層。為了防止遞歸調(diào)用無終止地進(jìn)行,必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調(diào)用,然后逐層返回。例如:

有函數(shù)f如下:

intf(intx);

{inty;

z=f(y);

returnz;

}

這個函數(shù)是一個遞歸調(diào)用。2.遞歸的方式

函數(shù)的遞歸調(diào)用有兩種形式:直接遞歸調(diào)用和間接遞歸調(diào)用。如下圖所示:

一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身,稱為直接遞歸調(diào)用。

若函數(shù)a的函數(shù)體內(nèi)調(diào)用函數(shù)b,函數(shù)b的函數(shù)體內(nèi)又調(diào)用函數(shù)a,這種遞歸調(diào)用稱為間接遞歸調(diào)用。直接遞歸調(diào)用一般要滿足以下兩個條件:

(1)

有一已知項,即有初始值,它是遞歸結(jié)束的條件;

(2)

存在遞歸公式,即后一項能用前一項來表示,而且所有項的表示方法一致。

在C語言程序設(shè)計中提倡使用遞歸調(diào)用來實現(xiàn)復(fù)雜問題的求解。注意,遞歸不是“循環(huán)定義”,任何遞歸定義必須滿足如下條件:(1)被定義項在定義中的應(yīng)用具有更小的“尺度”,即需要求解的問題可以分解為一個相對簡單的子問題。(2)被定義項在最小“尺度”上的定義不是遞歸的,即最終有一個子問題不是遞歸,必須有確定的值。[Return]7.2.6數(shù)組作為函數(shù)的參數(shù)

數(shù)組用作函數(shù)參數(shù)有兩種形式:一種是把數(shù)組元素(又稱下標(biāo)變量)作為實參使用;另一種是把數(shù)組名作為函數(shù)的形參和實參使用。

[Return]1.?dāng)?shù)組元素作為函數(shù)參數(shù)

數(shù)組元素就是下標(biāo)變量,它與普通變量并無區(qū)別。數(shù)組元素只能用作函數(shù)實參,其用法與普通變量完全相同:在發(fā)生函數(shù)調(diào)用時,把數(shù)組元素的值傳送給形參,實現(xiàn)單向值傳送。2.?dāng)?shù)組名作函數(shù)參數(shù)

數(shù)組名作函數(shù)參數(shù)時,既可以作形參,也可以作實參。

數(shù)組名

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論