- 相關(guān)推薦
C語(yǔ)言函數(shù)的聲明以及函數(shù)原型
C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。那么大家知道C語(yǔ)言函數(shù)的聲明以及函數(shù)原型是什么呢?下面來(lái)看看!
C語(yǔ)言代碼由上到下依次執(zhí)行,原則上函數(shù)定義要出現(xiàn)在函數(shù)調(diào)用之前,否則就會(huì)報(bào)錯(cuò)。但在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)在函數(shù)定義之前使用它們,這個(gè)時(shí)候就需要提前聲明。
所謂聲明(Declaration),就是告訴編譯器我要使用這個(gè)函數(shù),你現(xiàn)在沒(méi)有找到它的定義不要緊,請(qǐng)不要報(bào)錯(cuò),稍后我會(huì)把定義補(bǔ)上。
函數(shù)聲明的格式非常簡(jiǎn)單,相當(dāng)于去掉函數(shù)定義中的函數(shù)體再加上分號(hào);,如下所示:
返回值類型 函數(shù)名( 類型 形參, 類型 形參… );
也可以不寫(xiě)形參,只寫(xiě)數(shù)據(jù)類型:
返回值類型 函數(shù)名( 類型, 類型…);
函數(shù)聲明給出了函數(shù)名、返回值類型、參數(shù)列表(參數(shù)類型)等與該函數(shù)有關(guān)的信息,稱為函數(shù)原型(Function Prototype)。
函數(shù)原型的作用是告訴編譯器與該函數(shù)有關(guān)的信息,讓編譯器知道函數(shù)的存在,以及存在的形式,即使函數(shù)暫時(shí)沒(méi)有定義,編譯器也知道如何使用它。
有了函數(shù)聲明,函數(shù)定義就可以出現(xiàn)在任何地方了,甚至是其他文件、靜態(tài)鏈接庫(kù)、動(dòng)態(tài)鏈接庫(kù)等。
上節(jié)給出了計(jì)算sum = 1! + 2! + 3! + ... + (n-1)! + n!的代碼,這節(jié)我們稍作修改,將 factorial() 和 sum() 函數(shù)的定義放到 main() 函數(shù)后面,請(qǐng)看下面的代碼:
#include // 函數(shù)聲明long factorial(int n); //也可以寫(xiě)作 long factorial(int);long sum(long n); //也可以寫(xiě)作 long sum(long);int main(){ printf("1!+2!+...+9!+10! = %ld ", sum(10)); return 0;}//求階乘long factorial(int n){ int i; long result=1; for(i=1; i<=n; i++){ result *= i; } return result;}// 求累加的和long sum(long n){ int i; long result = 0; for(i=1; i<=n; i++){ //嵌套調(diào)用 result += factorial(i); } return result;}
運(yùn)行結(jié)果:
1!+2!+...+9!+10! = 4037913
我們知道,使用 printf()、puts()、scanf()、get) 等函數(shù)要引入 stdio.h 這個(gè)頭文件,很多初學(xué)者認(rèn)為 stdio.h 中包含了函數(shù)定義(也就是函數(shù)體),只要有了頭文件程序就能運(yùn)行。其實(shí)不然,頭文件中包含的都是函數(shù)聲明,而不是函數(shù)定義,函數(shù)定義都在系統(tǒng)庫(kù)中,只有頭文件沒(méi)有系統(tǒng)庫(kù)在鏈接時(shí)就會(huì)報(bào)錯(cuò),程序根本不能運(yùn)行。
最后再補(bǔ)充一點(diǎn),函數(shù)原型給出了使用該函數(shù)的所有細(xì)節(jié),當(dāng)我們不知道如何使用某個(gè)函數(shù)時(shí),需要查找的是它的原型,而不是它的定義,我們往往不關(guān)心它的實(shí)現(xiàn)。
【C語(yǔ)言函數(shù)的聲明以及函數(shù)原型】相關(guān)文章:
什么是C語(yǔ)言函數(shù)09-26
C語(yǔ)言函數(shù)的定義07-13
C語(yǔ)言指針函數(shù)和函數(shù)指針詳解09-29
C語(yǔ)言函數(shù)的遞歸調(diào)用08-26
關(guān)于C語(yǔ)言對(duì)函數(shù)06-14
C語(yǔ)言常用的轉(zhuǎn)出函數(shù)08-18
C語(yǔ)言函數(shù)遞歸教程09-25
C語(yǔ)言常用的輸入函數(shù)10-22