- C語(yǔ)言程序設(shè)計(jì)與實(shí)踐(第3版)
- 謝滿德 凌云等編著
- 1073字
- 2024-05-10 13:55:25
2.7 函數(shù)
C語(yǔ)言的程序是由一個(gè)個(gè)函數(shù)構(gòu)成的,除了有且必須有的main主函數(shù)以外,用戶也可以自己定義函數(shù)。此外,C語(yǔ)言的編譯系統(tǒng)還提供了一些庫(kù)函數(shù)。函數(shù)為程序的封裝提供了一種簡(jiǎn)便的方法,在其他地方使用函數(shù)時(shí)不需要考慮它是如何實(shí)現(xiàn)的。在使用正確設(shè)計(jì)的函數(shù)時(shí)不需要考慮“它是怎么做的”,只需要知道“它是做什么的”就夠了。當(dāng)定義好一個(gè)函數(shù)后,可以通過(guò)函數(shù)調(diào)用的方式來(lái)使用該函數(shù)的功能。
在上述示例中,所使用的函數(shù)(如cos、printf與scanf等)都是函數(shù)庫(kù)所提供的。接下來(lái)看看怎樣編寫自己的函數(shù)。這里,通過(guò)編寫一個(gè)求階乘的函數(shù)factorial(int n)來(lái)說(shuō)明定義函數(shù)的方法。
factorial(int n)函數(shù)用于計(jì)算整數(shù)n的階乘,比如factorial(4)的值為24。這個(gè)函數(shù)不是一個(gè)實(shí)用的階乘函數(shù),它只能用于處理比較小的整數(shù)的階乘,因?yàn)槿绻箅A乘的整數(shù)比較大,那么使用該方法很容易越界,導(dǎo)致程序無(wú)法獲得正確的結(jié)果。希望讀者讀完整本書以后,能為該問(wèn)題找到正確的解決方法。
下面給出函數(shù)factorial(int n)的定義及調(diào)用它的主程序,由此可以看到引入函數(shù)后的整個(gè)程序結(jié)構(gòu),如例2-7所示。
例2-7 計(jì)算整數(shù)0~9的階乘。

函數(shù)定義的一般形式為:

不同函數(shù)的定義可以按照任意次序出現(xiàn)在一個(gè)源文件或多個(gè)源文件中,但同一函數(shù)不能分開存放在幾個(gè)文件中。如果源程序出現(xiàn)在幾個(gè)文件中,那么對(duì)它的編譯和裝入將比整個(gè)源程序放在同一文件時(shí)要做的聲明更多,但這是操作系統(tǒng)的任務(wù),而不是語(yǔ)言屬性。我們暫且假定兩個(gè)函數(shù)放在同一文件中,從而使前面所學(xué)的有關(guān)運(yùn)行C程序的知識(shí)在目前仍然有用。
在上述示例中,factorial函數(shù)定義的第一行int factorial(int n)聲明了參數(shù)的類型與名字以及該函數(shù)返回的結(jié)果的類型。factorial的參數(shù)名只能在factorial內(nèi)部使用,在其他函數(shù)中不可見(jiàn),因此在其他函數(shù)中可以使用與之相同的參數(shù)名而不會(huì)發(fā)生沖突。一般而言,把在函數(shù)定義中用圓括號(hào)括起來(lái)的變量稱為形式參數(shù)。
factorial函數(shù)計(jì)算得到的值由return語(yǔ)句返回給main函數(shù)。關(guān)鍵詞return后可以跟任何表達(dá)式:

函數(shù)不一定都返回一個(gè)值。不含表達(dá)式的return語(yǔ)句用于使程序執(zhí)行流程返回調(diào)用者(但不返回有用的值)。調(diào)用函數(shù)也可以忽略(不用)一個(gè)函數(shù)所返回的值。讀者可能已經(jīng)注意到,在main函數(shù)末尾也有一個(gè)return語(yǔ)句。由于main本身也是一個(gè)函數(shù),它也可以向其調(diào)用者返回一個(gè)值,這個(gè)調(diào)用者實(shí)際上就是程序的執(zhí)行環(huán)境。一般而言,返回值為0表示正常返回,返回值非0則表示引發(fā)異常或錯(cuò)誤終止條件。
對(duì)函數(shù)的使用稱為函數(shù)調(diào)用。main主函數(shù)在如下程序語(yǔ)句中對(duì)factorial函數(shù)進(jìn)行了調(diào)用:

調(diào)用factorial函數(shù)時(shí),傳送了一個(gè)變量i給它。一般把函數(shù)調(diào)用中與參數(shù)對(duì)應(yīng)的值或變量稱為實(shí)參,如變量i,由實(shí)參傳遞值給形式參數(shù)。factorial函數(shù)則在調(diào)用執(zhí)行完時(shí)返回一個(gè)整數(shù)。在表達(dá)式中,factorial(i)就像i一樣是一個(gè)整數(shù)。
- 王浦劬《政治學(xué)基礎(chǔ)》(第3版)配套題庫(kù)【名校考研真題+章節(jié)題庫(kù)+模擬試題】
- 周維權(quán)《中國(guó)古典園林史》(第3版)配套題庫(kù)【名校考研真題+章節(jié)題庫(kù)+模擬試題】
- 謝柏青《大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)》配套題庫(kù)【名校考研真題+課后習(xí)題+章節(jié)題庫(kù)+模擬試題】
- Web滲透測(cè)試與防護(hù)(慕課版)
- 運(yùn)營(yíng)管理(原書第15版)
- 財(cái)務(wù)管理案例
- 廈門大學(xué)810民法學(xué)和刑法學(xué)歷年考研真題視頻講解【8小時(shí)高清視頻】
- 2020年貨幣銀行學(xué)考研真題(含復(fù)試)與典型題詳解[附贈(zèng)兩套模擬試題]
- 供配電系統(tǒng)
- Verilog HDL與CPLD/FPGA項(xiàng)目開發(fā)教程(第3版)
- 線路金具
- PowerPoint 2010商務(wù)演示文稿制作
- 亂世青春不迷茫
- 2020年天津公務(wù)員錄用考試專項(xiàng)教材:言語(yǔ)理解與表達(dá)【考點(diǎn)精講+典型題(含歷年真題)詳解】
- 吳于廑《世界史·近代史編(上卷)》(第2版)配套題庫(kù)【名校考研真題+章節(jié)題庫(kù)+模擬試題】