7 11 內部函式和外部函式

2021-09-27 08:14:19 字數 1513 閱讀 3950

有的函式可以被本檔案中的其他函式呼叫,也可以被其他檔案 中的函式呼叫,而有的函式只能被本檔案中的其他函式呼叫,不能被其他檔案中的函式呼叫。

函式本質 是全域性的。因為定義乙個函式目的就是要被另外的函式呼叫。如果不加宣告的話,乙個檔案中的函式既可以被本檔案中其他函式呼叫,也可以被其他檔案中的函式呼叫。但是,也可以指定某些函式不能被其他檔案呼叫。根據函式能否被其他原始檔呼叫,將函式區分為內部函式外部函式

內部函式

如果乙個函式只能被本檔案中其他函式所呼叫,就稱它為內部函式。在定義內部函式時,需要在函式名和函式型別的前面加static,即:

static  型別名  函式名(形參表)

例如,函式的首行

static int fun(int a,int b)
表示fun是乙個內部函式,不能被其他檔案呼叫。

內部函式又稱靜態函式,因為它是用static宣告的。使用內部函式,可以使函式的作用域只侷限於所在檔案。這樣,在不同的檔案中即使有同名的函式,也互不干擾。通常,乙個大程式往往分工由不同的人分別編寫不同的檔案模組,在各人編寫自己的檔案模組時,不必擔心所用函式是否會與其他檔案模組中的函式同名。

外部函式

如果在定義函式時,在函式首部的最左端加關鍵字extern,則此函式是外部函式,可供其他檔案呼叫。

如函式首部可以為

extern int fun(int a,int b)
這樣,函式fun就可以為其他檔案呼叫。c語言規定,如果在定義函式時省略extern,則預設為外部函式。

在需要呼叫此函式的其他檔案中,需要對此函式作宣告(不要忘記,即使本檔案中呼叫乙個函式,也要用函式原型進行宣告)。在對此函式作宣告時,要加關鍵字extern,表示該函式「是在其他檔案中定義的外部函式」。

例如:

檔案main.c

/*有乙個字串,內有若干個字元,現輸入乙個字元,要求程式將字串中該字元刪去.用外部函式實現*/

#include #include #include int main()

檔案delete.c

void delete_str(char s,char ch)

在main函式中用到的delete_str是在其他檔案中定義的外部函式。通過這個函式可知:使用extern宣告就能夠在本檔案中呼叫在其他檔案中定義的函式,或者說把該函式的作用域擴充套件到本檔案。extern宣告的形式就是在函式原型基礎上加關鍵字extern。

由於函式在本質上是外部的,在程式中經常要呼叫其他檔案中的外部函式,為方便程式設計,c語言允許在宣告函式時省寫extern。

由此可以進一步理解函式原型的作用。用函式原型能夠把函式的作用域擴充套件到定義該函式的檔案之外(不必使用extern)。只要在使用該函式的每乙個檔案中包含該函式的函式原型即可。函式原型通知編譯系統:該函式在本檔案中稍後定義,或在另一檔案中定義。

內部函式和外部函式

內部函式 如果乙個函式只能被本檔案中其它函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。內部函式又稱靜態函式。使用內部函式,可以使函式只侷限於所在檔案,如果在不同的檔案中有同名的內部函式,互不干擾。這樣不同的人可以分別編寫不同的函式,而不必擔心所用函式是否會與其...

內部函式和外部函式

一 內部函式 乙個函式只能被本檔案中其他函式呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static.static int fun int a,int b 內部函式又稱為靜態函式。通常把只能由同一檔案使用的函式和外部變數放在乙個檔案中,在它們前面都冠以static使之區域性化,...

內部函式和外部函式

內部函式 靜態函式 只能被本檔案中其它函式呼叫。定義內部函式時,在函式名核函式型別的前面加上static。static int fun int a,int b fun是內部函式,不能被其他檔案呼叫通常把只能由本檔案使用的函式和外部變數放在檔案開頭,且在前面冠以static將其進行區域性化,使其他檔案...