版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 滾珠絲杠課程設(shè)計圖紙
- 自行車的人機(jī)課程設(shè)計
- 荒島植物辨識課程設(shè)計
- 泵房的課程設(shè)計
- 智慧物流課課程設(shè)計
- 英語思維導(dǎo)圖課程設(shè)計
- 古泉1100kV千伏GIS安裝施工方案(報公司審核)
- 植物根莖科學(xué)課程設(shè)計
- 長沙交通集團(tuán)日常維修定點項目招標(biāo)文件
- 物體打擊 課程設(shè)計
- 大四課件感染深部真菌病
- 就這樣當(dāng)班主任讀書分享
- 《太上老君說五斗金章受生經(jīng)》
- 東南大學(xué)醫(yī)學(xué)三基考試外科選擇題及答案
- TZJASE 005-2021 非道路移動柴油機(jī)械(叉車)排氣煙度 檢驗規(guī)則及方法
- GB/T 31989-2015高壓電力用戶用電安全
- CB/T 749-1997固定鋼質(zhì)百葉窗
- 大佛頂首楞嚴(yán)經(jīng)淺釋
- 品牌(商標(biāo))授權(quán)書(中英文模板)
- 行動銷售(最新版)課件
- 船舶軸系與軸系布置設(shè)計課件
評論
0/150
提交評論