作用域描述程式中可訪問識別符號的區域。乙個c變數的作用域可以是塊作用域,函式作用域,函式原型作用域或檔案作用域。
int
fun(
int a)
//q作用域結束
}
在這個例子中,q的作用域只在內層塊,只有內層塊中的**才能訪問q。
在c99中,把塊的概念擴充套件到for迴圈,while迴圈,do-while迴圈和if語句所控制的**當中。即使沒有這些**用花括號括起來,也算是塊的一部分。
for
(int i =
0; i < n; i++
)// i的作用域僅限於for迴圈。一旦程式離開for迴圈,就不能再訪問i
printf
("%d"
, i)
;
int fun(int a, int b);
函式原型作用域的範圍是從形參的定義處到原型宣告結束。編譯器在處理函式原型中的形參時只關心它的型別,形參名則無關緊要。
#include
int a =2;
//a具有檔案作用域
void
fun(
void
)int
main
(void
)
這個例子中,a具有檔案作用域,main()
和fun()
都可以使用它。由於這樣的變數可以作用於多個函式,所以檔案作用域變數也稱作全域性變數。
int a =1;
//檔案作用域,外部鏈結
static
int b =2;
//檔案作用域,內部鏈結
intmain()
儲存類別
儲存期作用域
鏈結宣告方式
自動自動
塊空鏈結
塊內暫存器自動塊
空鏈結塊內,使用關鍵字register
靜態外部鏈結
靜態檔案
外部鏈結
所有函式外
靜態內部鏈結
靜態檔案
內部鏈結
所有函式外,使用關鍵字static
靜態空鏈結靜態塊
空連線塊內,使用關鍵字static
C語言變數的作用域
什麼叫做 塊呢?塊就是我們在復合語句中的就要 塊,在 塊中的auto 自動變數 是無法超出這個範圍的,一旦超出了這個範圍的話就會消失它的作用,比如 void main 這個main函式的花括號就是乙個 塊,而我們要在它的裡面再定義乙個 塊 這個就是乙個 塊,這是個內部的 塊,雖然是寫在main函式裡...
C語言變數的作用域
作用域是程式中定義的變數存在 或生效 的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。1 在所有函式外部定義的是全域性變數。2 在標頭檔案中定義的是全域性變數。3 在函式或語句塊內部定義的是區域性變數。4 函式的引數是該函式的區域性變數。順便解釋一下,函式的宣告和函式的定義是兩個...
C語言變數的作用域
作用域是程式中定義的變數存在 或生效 的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。1 在所有函式外部定義的是全域性變數。2 在標頭檔案中定義的是全域性變數。3 在函式或語句塊內部定義的是區域性變數。4 函式的引數是該函式的區域性變數。順便解釋一下,函式的宣告和函式的定義是兩個...