C語言學習 全域性變數作用域的擴充套件

2021-10-22 00:06:38 字數 1342 閱讀 5916

外部變數是在函式的外部定義的全域性變數,它的作用域是從變數的定義處開始一直到本程式的結尾。但有以下希望能擴充套件外部變數的作用域的情況:

外部變數的作用域為定義處到檔案結束,在定義之前的函式都不能引用該外部變數。但是如果需要定義點之前的函式也能引用該外部變數,則應該在引用之前使用關鍵字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 當別的檔案包含此標頭...

作用域,區域性與全域性變數

區域性變數 下圖中畫紅色的框為區域性變數,藍色框為全域性變數。不管區域性變數怎麼變,不會影響到全域性變數的值。只限於字串,數字等等簡單的變數 區域性變數的作用域只侷限於函式之內,在函式之外,不可以引用到區域性變數。在函式裡可以呼叫全域性變數,也可以賦值,但是不會對全域性變數有任何影響。只限於字串,數...