C/C++——static修飾符
1. static變數
2. static函式
當一個源程式由多個原始檔組成時,C語言根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。
內部函式(又稱靜態函式)
如果在一個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。
定義一個內部函式,只需在函式型別前再加一個“static”關鍵字即可,如下所示:
static 函式型別 函式名(函式引數表)
{……}
關鍵字“static”,譯成中文就是“靜態的”,所以內部函式又稱靜態函式。但此處“static”的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。
外部函式:
外部函式的定義:在定義函式時,如果沒有加關鍵字“static”,或冠以關鍵字“extern”,表示此函式是外部函式:
[extern] 函式型別 函式名(函式引數表)
{……}
呼叫外部函式時,需要對其進行說明:
[extern] 函式型別 函式名(引數型別表)[,函式名2(引數型別表2)……];
[案例]外部函式應用。
⑴檔案mainf.c
main()
{ extern void input(…),process(…),output(…);
input(…); process(…); output(…);
}
⑵檔案subf1.c
……
extern void input(……) /*定義外部函式*/
{……}
⑶檔案subf2.c
……
extern void process(……) /*定義外部 函式*/
{……}
⑷檔案subf3.c
……
extern void output(……) /*定義外部函式*/
{……}