謹慎extern申明外部變數

2021-10-10 11:22:59 字數 841 閱讀 7358

在c語言程式中,我們用extern關鍵字對某個變數作「外部變數申明」,表示該變數是乙個已經定義的外部變數,編譯器就會自動地在所有原始檔裡面查詢該變數地定義。

全域性變數的作用範圍只限於定義處到檔案結束。若想在定義之前使用全域性變數,就需要extern關鍵字來解決。

#include

intmain()

int number1=10;

int number2=

20;

由上面的**可看出,全域性變數number1、number2在main函式之後申明,作用範圍不包括main函式,要想在main函式中使用number1、number2變數,則只需加上extern關鍵字進行申明,使作用域擴充套件為從extern申明處到檔案結束。

以下**為簡單的加法函式,在add.c中

#include

//外部變數申明

extern

int number1;

extern

int number2;

intadd()

以下**呼叫add()函式,在main.c中

#include

//定義全域性變數

int number1=10;

int number2=20;

intmain()

上述**實現了在不同的原始檔中使用全域性變數number1和number2,在使用之前只需要通過extern關鍵字申明該變數為外部變數即可。

這裡也需要注意乙個點,有可能有多個外部模組引用了全域性變數,所以每個原始檔都可以對其進行修改。因此,我們要謹慎使用。

外部變數與extern

b 外部變數 b 顧名思義就是定義在函式之外的變數。它只能定義一次,定義後編譯程式將為它分配儲存單元。如果需要訪問外部變數,則必須宣告相應的外部變數,宣告時可以用 b extern b 語句 b 顯示宣告 b 也可以通過上下文來 b 隱式宣告 b 比如 int max 5 main 這是顯示宣告。當...

變數函式申明隨筆

塊級作用域 變數提公升 暫時性死區 不可重複申明 let t var t error var t 1 console.log window.t 1 let t 1 console.log window.t undefined let命令 const命令 class命令宣告的全域性變數,不屬於頂層物件...

Go 語言變數申明

變數宣告 第一種,指定變數型別,如果沒有初始化,則變數預設為零值。var v name v type v name value 零值就是變數沒有做初始化時系統預設設定的值。例項package main import fmt func main 多變數宣告 型別相同多個變數,非全域性變數 var vn...