區域變數只作用于函式或復合陳述句內部,此處不予討論,這里主要考慮的是全域變數及函式在多個檔案模塊之間的傳遞
全域變數
-
全域變數在某個檔案模塊中定義后,若要在其他檔案中使用,需要在使用前添加外部變數宣告
extern 型別 變數名; //型別名可省略,但可能會有warning否則:
- 若無外部變數宣告,編譯報錯:"變數
undeclared" - 若在其他檔案中再次定義,編譯時會報錯:"
multiple definition"
- 若無外部變數宣告,編譯報錯:"變數
-
若要使全域變數僅在所在的檔案可用,避免變數名沖突,可在定義時加上
static關鍵字,變成靜態全域變數,- 此時即使其他檔案中對該變數使用
extern外部變數宣告也無法使用 - 其他檔案模塊參考該檔案A下的函式時,使用的是A的靜態全域變數
- 此時即使其他檔案中對該變數使用
函式
-
在一個檔案模塊呼叫另一個檔案下的函式時,需要在使用前對該函式進行外部函式宣告
extern 回傳型別 函式名(引數說明);extern也可省略(可能有warning),編譯程式在當前檔案找不到函式定義時,會自動到其他檔案模塊下尋找,若仍無法找到則報錯 -
若想使函式僅在所在檔案下可用,避免函式名沖突,可在定義時加上
static關鍵字,變為靜態函式static 回傳型別 函式名(引數說明);
小結
- 在多檔案程式中,全域變數和函式在多個檔案間共用時,除變數/函式定義所在的檔案外,均需在使用前添加外部變數/函式宣告(函式的extern可省略)
- 若想使全域變數/函式僅在當前檔案內可用,可在定義時加上
static變成靜態函式/全域變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/33474.html
標籤:C
上一篇:如何選擇好的變數名!
下一篇:【網路編程02】簡單聊天程式
