...和extern關(guān)鍵字1 對(duì)函數(shù)的作用
徐連杰+張建+王睿
摘 要:隨著電子計(jì)算機(jī)的迅速發(fā)展和廣泛應(yīng)用,C程序設(shè)計(jì)語(yǔ)言在計(jì)算機(jī)軟件開(kāi)發(fā)中的作用日益顯著。C語(yǔ)言是目前世界上流行且使用得非常廣泛的結(jié)構(gòu)化的高級(jí)程序設(shè)計(jì)語(yǔ)言。C語(yǔ)言是1972年由貝爾實(shí)驗(yàn)室的Dennis Ritchie在B語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)出來(lái)的。最初的C語(yǔ)言是作為UNIX操作系統(tǒng)的開(kāi)發(fā)語(yǔ)言而被人們認(rèn)識(shí),它以最簡(jiǎn)易的方式編譯、使用低級(jí)處理存儲(chǔ)器以及進(jìn)行少量的代碼編寫(xiě);而且其也是在任何環(huán)境下都能運(yùn)行的通用計(jì)算機(jī)編程語(yǔ)言。本文從C程序的設(shè)計(jì)入手,簡(jiǎn)單介紹C語(yǔ)言的函數(shù)用法。
關(guān)鍵詞:C語(yǔ)言;C++;函數(shù)
1 C程序的設(shè)計(jì)過(guò)程
1.1 程序設(shè)計(jì)
C語(yǔ)言是適合于面向過(guò)程的程序設(shè)計(jì),主要設(shè)計(jì)思路是自頂向下、逐步細(xì)化;規(guī)劃好程序的設(shè)計(jì)方法,由順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)進(jìn)行描述。
1.2 程序編寫(xiě)
用C語(yǔ)言代碼表示算法的過(guò)程就是C程序的編寫(xiě)過(guò)程。編寫(xiě)好源程序后輸入到計(jì)算機(jī)中,生成源代碼程序文件。當(dāng)C程序的算法簡(jiǎn)單時(shí),可以編寫(xiě)一個(gè)由主函數(shù)構(gòu)成的簡(jiǎn)單程序;當(dāng)C程序的算法復(fù)雜時(shí),可以編寫(xiě)一個(gè)由主函數(shù)及若干子函數(shù)構(gòu)成的程序。因此,函數(shù)是C程序的基本組成單位。
下面是一個(gè)簡(jiǎn)單C語(yǔ)言程序:
#include
Main()
該程序是由一個(gè)主函數(shù)組成的簡(jiǎn)單算法,其運(yùn)行的結(jié)果是Hello,everyone!基本所有的C程序都基于最簡(jiǎn)單的程序,然后不斷添加子函數(shù),使用各種函數(shù)功能而實(shí)現(xiàn)。
1.3 上機(jī)實(shí)現(xiàn)
C程序的上機(jī)實(shí)現(xiàn)過(guò)程就是編譯、調(diào)試和運(yùn)行過(guò)程,從而可以實(shí)現(xiàn)上機(jī)操作。
1.4 C程序結(jié)構(gòu)特點(diǎn)
C語(yǔ)言程序整體是由一個(gè)或多個(gè)稱為函數(shù)的模塊構(gòu)成的。每個(gè)函數(shù)都具有對(duì)應(yīng)的功能,函數(shù)之間存在著相對(duì)明顯的界面,從而使程序具有清晰的模塊結(jié)構(gòu)。正因?yàn)镃語(yǔ)言程序的結(jié)構(gòu)特點(diǎn),提高了軟件開(kāi)發(fā)的效率,改善了軟件質(zhì)量。這也從整體上體現(xiàn)了C語(yǔ)言的普遍性及實(shí)用性。
2 C語(yǔ)言中函數(shù)的介紹及使用
2.1 函數(shù)的定義
函數(shù)的定義就是編寫(xiě)完成函數(shù)功能的模塊。通常C函數(shù)由一個(gè)主函數(shù)和若干子函數(shù)組成,而主函數(shù)是程序執(zhí)行的起始點(diǎn),用于調(diào)用其他子函數(shù);子函數(shù)還可以調(diào)用別的子函數(shù),通過(guò)調(diào)用關(guān)系可以實(shí)現(xiàn)復(fù)雜的C程序。我們所使用的函數(shù)包括兩種,即標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶自定義函數(shù)。標(biāo)準(zhǔn)庫(kù)函數(shù)是C系統(tǒng)定義好的放在標(biāo)準(zhǔn)庫(kù)中以直接供用戶使用的函數(shù);用戶自定義函數(shù)是專(zhuān)門(mén)用于解決自己的問(wèn)題所編寫(xiě)的。函數(shù)的定義格式一般如下:
類(lèi)型名
從格式可以看出,函數(shù)的定義主要由函數(shù)名和用大括號(hào)包圍的函數(shù)體兩部分構(gòu)成。函數(shù)名的小括號(hào)()中無(wú)論有無(wú)參數(shù),都不能省略。當(dāng)函數(shù)帶有多個(gè)形式參數(shù)時(shí),圓括號(hào)中的形式參數(shù)要用逗號(hào)相隔,并在大括號(hào)前說(shuō)明它的數(shù)據(jù)類(lèi)型。
2.2 函數(shù)的說(shuō)明和調(diào)用
在一個(gè)函數(shù)中需要調(diào)用另一個(gè)函數(shù)時(shí),程序控制就從調(diào)用函數(shù)轉(zhuǎn)到被調(diào)函數(shù)中去,并且從被調(diào)用的函數(shù)體起始位置開(kāi)始執(zhí)行該函數(shù)的語(yǔ)句。在執(zhí)行完后,或者遇到return語(yǔ)句時(shí),程序就控制返回調(diào)用函數(shù)原來(lái)的斷點(diǎn)繼續(xù)執(zhí)行。一般在調(diào)用一個(gè)函數(shù)時(shí),需要說(shuō)明該函數(shù)的存儲(chǔ)類(lèi)型和數(shù)據(jù)類(lèi)型,這稱為函數(shù)的說(shuō)明。函數(shù)的說(shuō)明存在于程序的說(shuō)明部分,它既可以在函數(shù)的內(nèi)部,也可以存在于函數(shù)的外部說(shuō)明部分。C語(yǔ)言規(guī)定,如果一個(gè)調(diào)用函數(shù)發(fā)生在該函數(shù)的定義之前,則在調(diào)用前必須對(duì)該函數(shù)說(shuō)明。目前函數(shù)說(shuō)明格式兩種,一是存儲(chǔ)類(lèi)型,數(shù)據(jù)類(lèi)型,函數(shù)名(形式參數(shù)數(shù)據(jù)類(lèi)型及參數(shù)名);二是存儲(chǔ)類(lèi)型,數(shù)據(jù)類(lèi)型,函數(shù)名(形式參數(shù)數(shù)據(jù)類(lèi)型)。
下面來(lái)分析一下函數(shù)在調(diào)用時(shí)常見(jiàn)的問(wèn)題,如參數(shù)的使用。在調(diào)用一個(gè)函數(shù)時(shí),必須使用有實(shí)際值的量作函數(shù)的參數(shù),稱之為函數(shù)的實(shí)參。實(shí)參數(shù)的個(gè)數(shù)和順序必須與函數(shù)定義中形式參數(shù)保持一致;此外,數(shù)據(jù)類(lèi)型必須與相應(yīng)的形式參數(shù)保持一致。總體來(lái)說(shuō),在程序調(diào)用執(zhí)行中,隨著程序控制作用的轉(zhuǎn)移,實(shí)參數(shù)的值被賦予了相應(yīng)的形式參數(shù),而參數(shù)的值可以看作是對(duì)參數(shù)初始化的初值。
2.3 函數(shù)的應(yīng)用舉例
函數(shù)的應(yīng)用大而廣之,在本文中無(wú)法對(duì)函數(shù)的各種功能進(jìn)行一一說(shuō)明。只能簡(jiǎn)單地介紹一下函數(shù)的使用和引導(dǎo)。因此,下面簡(jiǎn)單列舉一個(gè)例子進(jìn)行分析,以更加真實(shí)地感受一下函數(shù)的強(qiáng)大功能。例如,數(shù)組在函數(shù)間的傳遞。
數(shù)組是由多個(gè)數(shù)據(jù)組成的集合體,在C語(yǔ)言程序中經(jīng)常需要把數(shù)組的數(shù)據(jù)傳遞到函數(shù)中進(jìn)行處理。我們常采用地址傳送方式進(jìn)行處理,把數(shù)組的存儲(chǔ)首地址作為實(shí)參調(diào)用函數(shù);在被調(diào)用的函數(shù)中,以指針變量作為形式參數(shù)接收數(shù)組的首地址;當(dāng)該指針被賦予數(shù)組的首地址后,就指向了數(shù)組的存儲(chǔ)空間。下面以求數(shù)組的平均值的函數(shù)具體說(shuō)明。
Float mean(int *data,int num)
該函數(shù)是求數(shù)組中所有數(shù)據(jù)的平均值,體現(xiàn)了處理數(shù)組的函數(shù)的特性。其中最重要的就是處理數(shù)組的函數(shù)的形式參數(shù)必須有接收數(shù)組地址的指針。如上面data形式參數(shù)。此外,還經(jīng)常有一個(gè)形式參數(shù)用于接收數(shù)組的大小,如num。在上面的main函數(shù)中,指針data接收數(shù)組地址后,就指向了數(shù)組的存儲(chǔ)空間;在程序中使用for循環(huán),通過(guò)指針data的變化逐次訪問(wèn)數(shù)組的各個(gè)元素,并把元素的值累加;變量num控制循環(huán)次數(shù);全部累加元素和除以數(shù)據(jù)個(gè)數(shù)num就得到了平均值。
在最近20年里,C語(yǔ)言已經(jīng)成為一種最重要的、最流行的程序設(shè)計(jì)語(yǔ)言。不管是在哪種編程軟件中,都是一種不可或缺的編程語(yǔ)言。C語(yǔ)言的簡(jiǎn)單性和易使用性讓編程者能夠更快、更好地使用;C語(yǔ)言是一種融入控制功能的新式語(yǔ)言,它的設(shè)計(jì)使得用戶自然而然地去采用自頂而下的、結(jié)構(gòu)化的設(shè)計(jì)原則;C語(yǔ)言程序中所包含的各種函數(shù)更是極大地方便了用戶,能夠快速地利用編程實(shí)現(xiàn)復(fù)雜的算法;C語(yǔ)言的效率很高,能夠充分地發(fā)揮當(dāng)代計(jì)算機(jī)各方面的效能。
參考文獻(xiàn):
[1] 張?zhí)壹t,彭珍,楊炳儒,謝永紅.“C程序設(shè)計(jì)”課程的KM教學(xué)法研究[J].計(jì)算機(jī)教育,2010(02):113-115+101.
[2] 楊俊生,張潤(rùn).基于計(jì)算思維的“C程序設(shè)計(jì)”案例設(shè)計(jì)初探[J].工業(yè)和信息化教育,2013(06):65-69+64.
[3] 孫玲. C程序邏輯思維訓(xùn)練支持系統(tǒng)構(gòu)建與應(yīng)用[D].山西師范大學(xué),2014:105-107.