因?yàn)?/p>
成都創(chuàng)新互聯(lián)是一家專業(yè)提供精河企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、H5建站、小程序制作等業(yè)務(wù)。10年已為精河眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
C語言編譯時(shí)要檢查語法,所以A不對(duì);
C語言沒有過程,只有函數(shù),所以B不對(duì);
C語言函數(shù)內(nèi)不能定義函數(shù),既不能嵌套定義,所以C不對(duì)。
排除法也知道是D了。當(dāng)然由“函數(shù)內(nèi)不能定義函數(shù)”也可以推出所有函數(shù)都是外部函數(shù)。
—— 其實(shí)這種說法對(duì)外部函數(shù)的理解也還值得商榷。但其它的是完全不對(duì),也就選它吧。
有兩種理解.(1)庫(kù)函數(shù)是C語言的內(nèi)部函數(shù)或自帶函數(shù),外部函數(shù)即程序員自定函數(shù).
(2)凡加寫了extern 的函數(shù)是外部函數(shù).
第一種理解好懂:
C語言的內(nèi)部函數(shù)指的是C語言自帶的函數(shù),無論是動(dòng)態(tài)鏈接的或靜態(tài)鏈接的. 這些函數(shù)通過C語言的頭文件定義了.
例如, sin(),cos()等數(shù)學(xué)函數(shù),在math.h中定義了,輸入輸出函數(shù) printf(),fgetc()在stdio.h中定義了,時(shí)間函數(shù)表time(),ctime()等在time.h中定義了.還有許多其他內(nèi)部函數(shù).編程時(shí),只要用#include 庫(kù)名.h寫在編程頭部,程序中就可調(diào)用.
自定義函數(shù),就是用戶自己寫的函數(shù).
第二種凡加寫了extern 的函數(shù)是外部函數(shù):
自定義函數(shù)可以與程序的main()寫在同一個(gè)文件中,也可以寫在另一個(gè)文件中,這時(shí)你可能還另寫自己的頭文件或者寫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]
運(yùn)行:
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]
運(yùn)行:
a.exe
得
result=2.000000
c語言庫(kù)函數(shù)很多,我知道的有250多個(gè)??赡芨?。當(dāng)然不可能全部記住了。不過他們都是分類的,實(shí)現(xiàn)不同的功能。大體了解他們的功能用的時(shí)候查就行了,況且?guī)旌瘮?shù)用法很簡(jiǎn)單。能記住當(dāng)然好
內(nèi)部函數(shù)跟外部函數(shù)的區(qū)別在于:一個(gè)文件中定義的函數(shù)能否被其它文件調(diào)用。能被調(diào)用的函數(shù)在前面加extern(一般省略),而不能被調(diào)用的加static(不能省略),通常函數(shù)本質(zhì)上是全局的,也就是外部的可調(diào)用的。
我們通常調(diào)用的#include本質(zhì)上就是一些外部函數(shù)的集合,由于在一個(gè)文件中的函數(shù)要調(diào)用另外一個(gè)文件的函數(shù),要求在開始聲明一下,為了省略這些聲明,我們引用include命令。