內(nèi)部函數(shù)和外部函數(shù)
函數(shù)一旦定義后就可被其它函數(shù)調(diào)用。 但當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí), 在一個(gè)源文件中定義的函數(shù)能否被其它源文件中的函數(shù)調(diào)用呢?為此,C語(yǔ)言又把函數(shù)分為兩類(lèi):
一、內(nèi)部函數(shù)
如果在一個(gè)源文件中定義的函數(shù)只能被本文件中的函數(shù)調(diào)用,而不能被同一源程序其它文件中的函數(shù)調(diào)用, 這種函數(shù)稱(chēng)為內(nèi)部函
數(shù)。定義內(nèi)部函數(shù)的一般形式是: static 類(lèi)型說(shuō)明符 函數(shù)名(形參表) 例如:
static int f(int a,int b) 內(nèi)部函數(shù)也稱(chēng)為靜態(tài)函數(shù)。但此處?kù)o態(tài)static 的含義已不是指存儲(chǔ)方式,而是指對(duì)函數(shù)的調(diào)用范圍只局限于本文件。 因此在不同的源文件中定義同名的靜態(tài)函數(shù)不會(huì)引起混淆。
二、外部函數(shù)
外部函數(shù)在整個(gè)源程序中都有效,其定義的一般形式為: extern 類(lèi)型說(shuō)明符 函數(shù)名(形參表) 例如:
extern int f(int a,int b)如在函數(shù)定義中沒(méi)有說(shuō)明extern或static則隱含為extern。在一個(gè)源文件的函數(shù)中調(diào)用其它源文件中定義的外部函數(shù)時(shí),應(yīng) 用extern說(shuō)明被調(diào)函數(shù)為外部函數(shù)。例如:
F1.C (源文件一)
main()
{
extern int f1(int i); /*外部函數(shù)說(shuō)明,表示f1函
數(shù)在其它源文件中*/
……
}
F2.C (源文件二)
extern int f1(int i); /*外部函數(shù)定義*/
{
……
}
本章小結(jié)
1. 函數(shù)的分類(lèi)
(1)庫(kù)函數(shù):由C系統(tǒng)提供的函數(shù);
(2)用戶定義函數(shù):由用戶自己定義的函數(shù);
(3)有返回值的函數(shù)向調(diào)用者返回函數(shù)值,應(yīng)說(shuō)明函數(shù)類(lèi)型( 即返回值的類(lèi)型 );
(4)無(wú)返回值的函數(shù):不返回函數(shù)值,說(shuō)明為空(void)類(lèi)型;
(5)有參函數(shù):主調(diào)函數(shù)向被調(diào)函數(shù)傳送數(shù)據(jù);
(6)無(wú)參函數(shù):主調(diào)函數(shù)與被調(diào)函數(shù)間無(wú)數(shù)據(jù)傳送;
(7)內(nèi)部函數(shù):只能在本源文件中使用的函數(shù);
(8)外部函數(shù):可在整個(gè)源程序中使用的函數(shù)。
2. 函數(shù)定義的一般形式
[extern/static] 類(lèi)型說(shuō)明符 函數(shù)名([形參表]) 方括號(hào)內(nèi)為可選項(xiàng)。
3. 函數(shù)說(shuō)明的一般形式 [extern] 類(lèi)型說(shuō)明符 函數(shù)名([形參表]);
4. 函數(shù)調(diào)用的一般形式 函數(shù)名([實(shí)參表])
5. 函數(shù)的參數(shù)分為形參和實(shí)參兩種,形參出現(xiàn)在函數(shù)定義中,實(shí)參出現(xiàn)在函數(shù)調(diào)用中,發(fā)生函數(shù)調(diào)用時(shí),將把實(shí)參的值傳送給形參。
6. 函數(shù)的值是指函數(shù)的返回值,它是在函數(shù)中由return語(yǔ)句返回的。
7. 數(shù)組名作為函數(shù)參數(shù)時(shí)不進(jìn)行值傳送而進(jìn)行地址傳送。形參和實(shí)參實(shí)際上為同一數(shù)組的兩個(gè)名稱(chēng)。因此形參數(shù)組的值發(fā)生變化,實(shí)參數(shù)組的值當(dāng)然也變化。
8. C語(yǔ)言中,允許函數(shù)的嵌套調(diào)用和函數(shù)的遞歸調(diào)用。
9. 可從三個(gè)方面對(duì)變量分類(lèi),即變量的數(shù)據(jù)類(lèi)型,變量作用域和變量的存儲(chǔ)類(lèi)型。在第二章中主要介紹變量的數(shù)據(jù)類(lèi)型,本章中介紹了變量的作用域和變量的存儲(chǔ)類(lèi)型。
10.變量的作用域是指變量在程序中的有效范圍, 分為局部變量和全局變量。
11.變量的存儲(chǔ)類(lèi)型是指變量在內(nèi)存中的存儲(chǔ)方式,分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ),表示了變量的生存期。
12.變量分類(lèi)特性表存儲(chǔ)方式存儲(chǔ)類(lèi)型說(shuō)明符何處定義生存期作用域賦值前的值可賦初值類(lèi)型動(dòng)態(tài)存儲(chǔ)自動(dòng)變量 auto 寄存器變量 register 函數(shù)或復(fù)合語(yǔ)句內(nèi)被調(diào)用時(shí)在定義它的函數(shù)或復(fù)合語(yǔ)句內(nèi)不定基本類(lèi)型int或char外部變量extern函數(shù)之外整個(gè)源程序整個(gè)源程序靜態(tài)局部變量static 函數(shù)或復(fù)合語(yǔ)句內(nèi)靜態(tài)全局變量static 函數(shù)之外整個(gè)源程序在定義它的函數(shù)或復(fù)合語(yǔ)句內(nèi)在定義它的源文件內(nèi)0任何類(lèi)型。
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |