因為
創(chuàng)新互聯(lián)建站主營保靖網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),保靖h5小程序制作搭建,保靖網(wǎng)站營銷推廣歡迎保靖等地區(qū)企業(yè)咨詢
C語言編譯時要檢查語法,所以A不對;
C語言沒有過程,只有函數(shù),所以B不對;
C語言函數(shù)內(nèi)不能定義函數(shù),既不能嵌套定義,所以C不對。
排除法也知道是D了。當(dāng)然由“函數(shù)內(nèi)不能定義函數(shù)”也可以推出所有函數(shù)都是外部函數(shù)。
—— 其實這種說法對外部函數(shù)的理解也還值得商榷。但其它的是完全不對,也就選它吧。
默認(rèn)都為外部 ,就是可以被別的文件調(diào)用,前面static 修飾的話,則只能在本文件域中被調(diào)用。。
有兩種理解.(1)庫函數(shù)是C語言的內(nèi)部函數(shù)或自帶函數(shù),外部函數(shù)即程序員自定函數(shù).
(2)凡加寫了extern 的函數(shù)是外部函數(shù).
第一種理解好懂:
C語言的內(nèi)部函數(shù)指的是C語言自帶的函數(shù),無論是動態(tài)鏈接的或靜態(tài)鏈接的. 這些函數(shù)通過C語言的頭文件定義了.
例如, sin(),cos()等數(shù)學(xué)函數(shù),在math.h中定義了,輸入輸出函數(shù) printf(),fgetc()在stdio.h中定義了,時間函數(shù)表time(),ctime()等在time.h中定義了.還有許多其他內(nèi)部函數(shù).編程時,只要用#include 庫名.h寫在編程頭部,程序中就可調(diào)用.
自定義函數(shù),就是用戶自己寫的函數(shù).
第二種凡加寫了extern 的函數(shù)是外部函數(shù):
自定義函數(shù)可以與程序的main()寫在同一個文件中,也可以寫在另一個文件中,這時你可能還另寫自己的頭文件或者寫extern....,告訴編譯器,main中用到的某某函數(shù)是"外部函數(shù)".
例如,main()在a.c中,自定義函數(shù)my_func()在a2.c中
a.c內(nèi)容:
#include stdio.h
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 內(nèi)容:
float my_func(float a)
{
return a;
}
編譯:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [鏈接成a.exe]
運行:
a.exe
得
result=2.000000
extern float my_func() 是外部說明,告訴編譯,main()里的my_func是外部函數(shù),要通過鏈接(.obj)得到.
如果把my_func寫在a.c里:
#include stdio.h
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函數(shù).
編譯:
cl a.c [得a.exe]
運行:
a.exe
得
result=2.000000
int。C語言規(guī)定:在定義函數(shù)時,若其返回值類型為int,則可以默認(rèn)。
C語言函數(shù)有三類,分為外部函數(shù)、靜態(tài)函數(shù)、內(nèi)聯(lián)函數(shù),其中前兩種是C89標(biāo)準(zhǔn)支持,第三種是C99標(biāo)準(zhǔn)增加的。
1、外部函數(shù)
這類函數(shù)是默認(rèn)的函數(shù)類型,基本上平時我們使用的就是這種函數(shù),聲明有以下兩種方式,例如:
// 使用extern關(guān)鍵字,顯示聲明
extern int add(int a, int b);
// 或省略關(guān)鍵字extern,編譯器也會自動認(rèn)為是extern
int add(int a, int b);
外部函數(shù)表明在當(dāng)前聲明和定義的代碼文件中可以使用,也可以在其它代碼文件中可以通過#include指令包含使用,對外部的代碼可見。
2、靜態(tài)函數(shù)
這類函數(shù)其實與外部函數(shù)相對的,因為需要使用static關(guān)鍵字修飾,因此稱為靜態(tài)函數(shù),其實就是內(nèi)部函數(shù)。聲明方式如下,例如:
static int add(int a, int b);
靜態(tài)函數(shù)的作用域只能在當(dāng)前聲明和定義的文件中,在其它代碼文件中無法#include使用,因此在整個程序中,特別是大型程序,有多個源代碼文件時,即使定義相同名稱的兩個靜態(tài)函數(shù),也不會有命名和使用沖突。
3、內(nèi)聯(lián)函數(shù)
是新增的特性,使用inline關(guān)鍵字聲明和定義,該類函數(shù)類似#define宏定義展開,編譯時會直接將函數(shù)定義代碼在調(diào)用的地方復(fù)制展開,這樣會減少函數(shù)調(diào)用的開銷,提高運行效率。
inline int add(int a, int b);
內(nèi)聯(lián)函數(shù)適合短小的、被頻繁調(diào)用的函數(shù),對于復(fù)雜函數(shù),無法使用。
擴展資料:
C語言編寫注意事項:
1、const在聲明變量中起限制作用, 該限定變量的值不能被修改。
2、%運算符不能應(yīng)用與float或double類型。
3、char類型轉(zhuǎn)換為int型時, 無法判斷它是signed還是unsigned.這樣其結(jié)果有可能為負(fù)數(shù), 因此轉(zhuǎn)換時盡量指定signed和unsigned限制符。
4、++i與i++不同之處: ++i是先+1在使用, i++是先使用i在遞加1。
5、三元運算符"?:" 第一個表達式的括號不是必須的,但是由于三元表達式的優(yōu)先級非常低,我們還是將第一個表達式用()括起便于閱讀和理解。
6、C語言中可以使用遞歸 (即函數(shù)調(diào)用自身函數(shù)), 其不節(jié)省儲存器開銷也不加快執(zhí)行速度, 只是使程序緊湊便于理解。
兩個可以放在同一目錄下,也可以放到不同的目錄下,前提是你在主函數(shù)文件中應(yīng)當(dāng)包含相應(yīng)的頭文件或C文件(路徑寫對應(yīng),寫完整就好)。
外部函數(shù)文件根據(jù)所寫函數(shù)需要將對應(yīng)頭文件包含進來,stdio.h作為一個標(biāo)準(zhǔn)輸入輸出文件,只要你該外部文件內(nèi)涉及到輸入輸出等操作,就是必須要包含進來的。
希望對你有所幫助!