MENU 服務(wù) 案例
網(wǎng)站建設(shè)-網(wǎng)站設(shè)計(jì)-北京網(wǎng)站建設(shè)-高端網(wǎng)站制作公司-尚品中國(guó)
我們通過(guò)擁抱變化創(chuàng)造
360°的品牌價(jià)值__
簡(jiǎn)體
簡(jiǎn)體中文 English

尚品與山東真諾智能設(shè)備有限公司簽署網(wǎng)站改版合作協(xié)議

類(lèi)型:尚品動(dòng)態(tài) 了解更多

程序中的函數(shù)應(yīng)用

來(lái)源:尚品中國(guó)| 類(lèi)型:網(wǎng)站百科| 時(shí)間:2014-06-17
在程序設(shè)計(jì)語(yǔ)言的北京網(wǎng)站制作發(fā)展過(guò)程中,過(guò)程抽象是一個(gè)重要且具有里程碑作用的概念。過(guò)程抽象是指在程序中可以將一個(gè)語(yǔ)句序列寫(xiě)成一個(gè)具有名稱(chēng)和參數(shù)的子程序,然后在需要的地方進(jìn)行調(diào)用,它實(shí)現(xiàn)了對(duì)計(jì)算過(guò)程的抽象和對(duì)代碼的重用。

人們?cè)谇蠼庖粋€(gè)復(fù)雜問(wèn)題時(shí),通常采用的是逐步分解、分而治之的方法,也就是把一個(gè)復(fù)雜的大問(wèn)題分解成若干個(gè)比較容易求解的小問(wèn)題,然后分別求解。類(lèi)似地,程序員在設(shè)計(jì)一個(gè)復(fù)雜的程序時(shí),往往也是把整個(gè)程序劃分成若干個(gè)功能較為單一且相對(duì)獨(dú)立的子程序,然后分別予以實(shí)現(xiàn),最后再把所有的子程序像搭積木一樣裝配起來(lái)。

過(guò)程和函數(shù)是兩類(lèi)不同的子程序。一個(gè)過(guò)程是參數(shù)化計(jì)算的語(yǔ)句序列,一般沒(méi)有返回值。函數(shù)在結(jié)構(gòu)上類(lèi)似于過(guò)程,但一個(gè)函數(shù)通常有一個(gè)返回值.在C,C++等語(yǔ)言中,過(guò)程和函數(shù)被統(tǒng)一為函數(shù)這一種形式。

在程序中使用函數(shù)時(shí),需要定義函數(shù)和調(diào)用函數(shù)。每種程序設(shè)計(jì)語(yǔ)言都會(huì)提供關(guān)于函數(shù)定義和調(diào)用的相應(yīng)規(guī)則。函數(shù)定義描述了函數(shù)做什么和怎么做,函數(shù)調(diào)用則是使用已經(jīng)定義的函數(shù)。

1.函數(shù)定義

一個(gè)函數(shù)的定義通常由兩部分構(gòu)成:函數(shù)首部和函數(shù)體。函數(shù)首部給出了一個(gè)契約說(shuō)明了如何使用一個(gè)函數(shù);P數(shù)體則用語(yǔ)句描述了函數(shù)的具體功能和實(shí)現(xiàn)細(xì)節(jié)。函數(shù)定義的一般格式是:

返回值的類(lèi)型函數(shù)名(形參表),/函數(shù)首部
{
函數(shù)體;
}
數(shù)首部說(shuō)明了函數(shù)返回值的數(shù)據(jù)類(lèi)型、函數(shù)的名字和函數(shù)運(yùn)行時(shí)所需的參數(shù)(稱(chēng)為形參)及其類(lèi)型。函數(shù)所實(shí)現(xiàn)的功能在函數(shù)體部分描述。

2.函數(shù)調(diào)用

在一個(gè)函數(shù)(稱(chēng)為調(diào)用函數(shù))中需要使用另一個(gè)函數(shù)(稱(chēng)為被調(diào)用函數(shù))已經(jīng)實(shí)現(xiàn)的功能時(shí),便以名字和參數(shù)進(jìn)行調(diào)用,稱(chēng)為函數(shù)調(diào)用。在使用一個(gè)函數(shù)時(shí),只要知道如何調(diào)用就可以了,并不需要關(guān)心被調(diào)用函數(shù)的內(nèi)部實(shí)現(xiàn)。因此,調(diào)用函數(shù)需要給出被調(diào)用函數(shù)的名字、向被調(diào)用函數(shù)傳遞的參數(shù)(實(shí)參)以及如何處理返回值等。

函數(shù)調(diào)用的一般形式為:

函數(shù)名(實(shí)參表);

實(shí)現(xiàn)函數(shù)調(diào)用時(shí),系統(tǒng)要作一系列的處理,包括保存現(xiàn)場(chǎng)、實(shí)參傳遞、控制轉(zhuǎn)人被調(diào)用函數(shù)等,調(diào)用完成后需要恢復(fù)現(xiàn)場(chǎng)、傳遞返回值、控制轉(zhuǎn)回調(diào)用函數(shù)。

表7-4是一個(gè)函數(shù)定義和函數(shù)調(diào)用的例子,其中,函數(shù)power的功能是求解實(shí)數(shù)x的k次方。
函數(shù)定義和函數(shù)調(diào)用

 


函數(shù)調(diào)用的含義如圖7-7所示,其中,調(diào)用函數(shù)caller在其語(yǔ)句“y = power(a,4);”中調(diào)用了函數(shù)power.因此,在caller的執(zhí)行過(guò)程中,執(zhí)行到該函數(shù)調(diào)用時(shí),將實(shí)參a和4的值傳遞給形參x和k,控制流轉(zhuǎn)人函數(shù)power開(kāi)始執(zhí)行,遇到return p時(shí)計(jì)算返回值,power執(zhí)行結(jié)束.此后,控制流再返回調(diào)用函數(shù)caller并將返回值傳給y,接著執(zhí)行caller中“Y=power(a,4) ;”之后的語(yǔ)句。
函數(shù)調(diào)用示例


3.參數(shù)與參數(shù)傳遞

在程序中使用函數(shù)時(shí),參數(shù)起著調(diào)用函數(shù)與被調(diào)用函數(shù)之間的信息傳遞作用。通常有兩類(lèi)參數(shù):形式參數(shù)和實(shí)際參數(shù)。形式參數(shù)(Parameter,簡(jiǎn)稱(chēng)為形參)出現(xiàn)在函數(shù)定義時(shí)的函數(shù)首部,在形式上以代表著某些量的特征參數(shù)的方式出現(xiàn);實(shí)際參數(shù)(Argument,簡(jiǎn)稱(chēng)為實(shí)參)出現(xiàn)在函數(shù)調(diào)用中,它們對(duì)應(yīng)于形式參數(shù)的具體內(nèi)容。

例如,在前面關(guān)于函數(shù)power的定義中,函數(shù)首部為“double power(double x, int k)",其中,x和k就是形參。函數(shù)調(diào)用power(3. 5,4)實(shí)現(xiàn)計(jì)算3. 54 , 3.5和4則是實(shí)參.函數(shù)調(diào)用power(a, m)則實(shí)現(xiàn)計(jì)算am, a和m是實(shí)參,需將實(shí)參變量a的值傳遞給形參x,實(shí)參變量m的值傳遞給形參k。在調(diào)用時(shí).實(shí)參a和m必須具有確定的值。

函數(shù)的實(shí)參與形參是相對(duì)應(yīng)的。實(shí)現(xiàn)函數(shù)調(diào)用時(shí),實(shí)參要向形參傳遞值。參數(shù)傳遞指的是在函數(shù)調(diào)用時(shí)實(shí)參與形參的匹配動(dòng)作。如果由實(shí)參向形參傳遞值,相應(yīng)的調(diào)用就稱(chēng)為傳優(yōu)調(diào)用;如果傳遞的是實(shí)參的地址(或者通過(guò)引用傳遞),則稱(chēng)為引用調(diào)用。下面以實(shí)現(xiàn)兩個(gè)整型變It交換值的函數(shù)為例,簡(jiǎn)要說(shuō)明傳值調(diào)用和引用調(diào)用方式下的參數(shù)傳遞問(wèn)題,其中swapl采用的是傳值調(diào)用,swap2采用的是引用調(diào)用,它們的定義和調(diào)用如表7-5所示。
參數(shù)傳遞指的是在函數(shù)調(diào)用時(shí)實(shí)參與形參的匹配動(dòng)作

在傳值調(diào)用方式中,形參將取得實(shí)參的值。在這種方式下,形參與實(shí)參分別對(duì)應(yīng)不同的存儲(chǔ)單元.以函數(shù)swapl為例,在函數(shù)調(diào)用語(yǔ)句swapl (a, b)得到執(zhí)行之前,系統(tǒng)還沒(méi)有為形參分配存儲(chǔ)單元,如圖7-8(a)所示。函數(shù)調(diào)用語(yǔ)句執(zhí)行時(shí),系統(tǒng)為形參x,y分配存儲(chǔ)單元,實(shí)參a和b的值分別傳遞給形參x和y。在函數(shù)swapl執(zhí)行時(shí),確實(shí)將x和y的值作了交換,但此時(shí)x與a無(wú)關(guān)、y與b無(wú)關(guān),所以a和b的值并沒(méi)有得到交換,如圖7-8 (c)所示.實(shí)際卜,被調(diào)用函數(shù)執(zhí)行結(jié)束后,形參的存儲(chǔ)空間就被系統(tǒng)回收了。

實(shí)參與形參對(duì)應(yīng)不同的存儲(chǔ)空間


在引用調(diào)用方式下,形參表示的是實(shí)參的存儲(chǔ)位置,形參可以看成是實(shí)參之存儲(chǔ)位置的代名詞。因此,在函數(shù)swap2中,交換x與Y的值就等同于交換a與b的值,調(diào)用結(jié)束后實(shí)現(xiàn)了對(duì)a和b值的交換處理。

4.標(biāo)準(zhǔn)庫(kù)函數(shù)

編寫(xiě)程序時(shí),并不需要也不應(yīng)當(dāng)一切都從頭開(kāi)始,而應(yīng)當(dāng)盡可能地利用前人的成果,以提高開(kāi)發(fā)的速度和質(zhì)量。為此,每種程序設(shè)計(jì)語(yǔ)言在發(fā)布時(shí)都包含了一些隨程序開(kāi)發(fā)環(huán)境提供的函數(shù)庫(kù),供編程人員開(kāi)發(fā)程序時(shí)調(diào)用,如C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)等。由編譯程序開(kāi)發(fā)商和第三方提供的函數(shù)庫(kù),實(shí)現(xiàn)了許多公用的或常用的功能,這些函數(shù)在準(zhǔn)確性、高效性和可移植性方面更有保證。

存放在函數(shù)庫(kù)中的函數(shù)稱(chēng)為庫(kù)函數(shù).庫(kù)函數(shù)具有明確的功能、人口參數(shù)和返回值。

函數(shù)庫(kù)以文件方式提供。例如,擴(kuò)展名為lib或dll的文件通常就是某種函數(shù)庫(kù)。
來(lái)源聲明:本文章系尚品中國(guó)編輯原創(chuàng)或采編整理,如需轉(zhuǎn)載請(qǐng)注明來(lái)自尚品中國(guó)。以上內(nèi)容部分(包含圖片、文字)來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)與本站聯(lián)系(010-60259772)。
TAG標(biāo)簽:

推薦新聞

更多行業(yè)
如果您的網(wǎng)站可以增加轉(zhuǎn)化次數(shù)并提高客戶(hù)滿(mǎn)意度,該怎么辦?

預(yù)約專(zhuān)業(yè)咨詢(xún)顧問(wèn)溝通!

*尚品專(zhuān)業(yè)顧問(wèn)將盡快與您聯(lián)系

免責(zé)聲明

非常感謝您訪(fǎng)問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶(hù)因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

現(xiàn)在就與專(zhuān)業(yè)咨詢(xún)顧問(wèn)溝通!

  • 全國(guó)服務(wù)熱線(xiàn)

    400-700-4979

  • 北京服務(wù)熱線(xiàn)

    010-60259772

信息保護(hù)中請(qǐng)放心填寫(xiě)
在線(xiàn)咨詢(xún)

免責(zé)聲明

非常感謝您訪(fǎng)問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶(hù)因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com