您好,歡迎進入深圳市穎特新科技有限公司官方網(wǎng)站!
C語言代碼由上到下依次執(zhí)行,原則上函數(shù)定義要出現(xiàn)在函數(shù)調用之前,否則就會報錯。但在實際開發(fā)中,經常會在函數(shù)定義之前使用它們,這個時候就需要提前聲明。
所謂聲明(Declaration),就是告訴編譯器我要使用這個函數(shù),你現(xiàn)在沒有找到它的定義不要緊,請不要報錯,稍后我會把定義補上。
函數(shù)聲明的格式非常簡單,相當于去掉函數(shù)定義中的函數(shù)體再加上分號;
,如下所示:
返回值類型 函數(shù)名( 類型 形參, 類型 形參… );
也可以不寫形參,只寫數(shù)據(jù)類型:
返回值類型 函數(shù)名( 類型, 類型…);
函數(shù)聲明給出了函數(shù)名、返回值類型、參數(shù)列表(參數(shù)類型)等與該函數(shù)有關的信息,稱為函數(shù)原型(Function Prototype)。
函數(shù)原型的作用是告訴編譯器與該函數(shù)有關的信息,讓編譯器知道函數(shù)的存在,以及存在的形式,即使函數(shù)暫時沒有定義,編譯器也知道如何使用它。
有了函數(shù)聲明,函數(shù)定義就可以出現(xiàn)在任何地方了,甚至是其他文件、靜態(tài)鏈接庫、動態(tài)鏈接庫等。
上節(jié)給出了計算sum = 1! + 2! + 3! + ... + (n-1)! + n!
的代碼,這節(jié)我們稍作修改,將 factorial() 和 sum() 函數(shù)的定義放到 main() 函數(shù)后面,請看下面的代碼:
運行結果:
1!+2!+...+9!+10! = 4037913
我們知道,使用 printf()、puts()、scanf()、getchar() 等函數(shù)要引入 stdio.h 這個頭文件,很多初學者認為 stdio.h 中包含了函數(shù)定義(也就是函數(shù)體),只要有了頭文件程序就能運行。其實不然,頭文件中包含的都是函數(shù)聲明,而不是函數(shù)定義,函數(shù)定義都在系統(tǒng)庫中,只有頭文件沒有系統(tǒng)庫在鏈接時就會報錯,程序根本不能運行。
最后再補充一點,函數(shù)原型給出了使用該函數(shù)的所有細節(jié),當我們不知道如何使用某個函數(shù)時,需要查找的是它的原型,而不是它的定義,我們往往不關心它的實現(xiàn)。
上一篇:中興大事件
下一篇:N32903系列的基礎知識(1)