外部變數是在函式的外部定義的全域性變數,它的作用域是從變數的定義處開始一直到本程式的結尾。但有以下希望能擴充套件外部變數的作用域的情況:
外部變數的作用域為定義處到檔案結束,在定義之前的函式都不能引用該外部變數。但是如果需要定義點之前的函式也能引用該外部變數,則應該在引用之前使用關鍵字extern對該變數作「外部變數宣告」,表示把該外部變數的作用域擴充套件到此位置,那麼就能在該外部變數定義處之前合法使用該外部變數了。
例子:
#include
//呼叫函式,求三個整數中的大者
//用extern宣告外部變數,擴充套件外部變數在程式檔案中的作用域
intmax()
;int
main()
int a, b, c;
//定義外部變數a,b,c
intmax()
return m;
}
解析:
extern
int a,b,c 等同於 extern a,b,c
因為這不是定義變數,可以不指定型別,寫出外部變數名即可。
第一種情況是在同乙個原始檔中使用外部變數的方法,如果有多個原始檔,想在a檔案中引用b檔案中的已定義外部變數,該如何做?
file1:
//file1
#include
//給定b的值,輸入a和m,求a*b和a**m(a的m次方)的值
int a;
//定義外部變數
intpower
(int);
intmain()
file2:
//file2
extern a;
//把在file1檔案中已定義的外部變數的作用域擴充套件到本檔案
intpower
(int n)
return y;
}
解析:
static
int a;
intmain()
這樣在其它檔案中就算使用「extern a」,也不能使用本檔案的外部變數a。
這種加上static宣告,只能用於本檔案的外部變數成為「靜態外部變數」。
用static宣告乙個變數的作用:
(1)對區域性變數用static宣告,把它分配在靜態儲存區,該變數在整個程式執行期間所在的儲存單元都不會釋放。
(2)對全域性變數用static宣告,則該變數的作用域只限於本檔案模組(即被宣告的檔案中)
區域性變數,全域性變數,作用域
目錄在函式內部,可以引用全域性變數 name zk 全域性變數 全域性作用域 def change name 小黃 在函式裡面是區域性變數 區域性作用域 print id name print name change print name,id name 只需要在函式裡宣告變數前加 global 變...
linux c作用域 全域性變數使用
linux下將多個檔案編譯成乙個檔案 gcc file1 c o file1.o gcc file2 c o file2.o gcc file1.o file.o o exec 檔案中的全域性變數使用 在乙個檔案中宣告乙個變數a,再其對應的.h檔案中宣告extern int a 當別的檔案包含此標頭...
作用域,區域性與全域性變數
區域性變數 下圖中畫紅色的框為區域性變數,藍色框為全域性變數。不管區域性變數怎麼變,不會影響到全域性變數的值。只限於字串,數字等等簡單的變數 區域性變數的作用域只侷限於函式之內,在函式之外,不可以引用到區域性變數。在函式裡可以呼叫全域性變數,也可以賦值,但是不會對全域性變數有任何影響。只限於字串,數...