作用域是程式中定義的變數存在(或生效)的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。
1)在所有函式外部定義的是全域性變數。
2)在標頭檔案中定義的是全域性變數。
3)在函式或語句塊內部定義的是區域性變數。
4)函式的引數是該函式的區域性變數。
順便解釋一下,函式的宣告和函式的定義是兩個概念,但是,變數的定義和變數的宣告是同一概念,或定義變數和宣告變數也行,取決於程式設計師的表達習慣。
全域性變數是定義在函式外部,通常是在程式的頂部(其它地方也可以)。全域性變數在整個程式生命週期內都是有效的,在定義位置之後的任意函式中都能訪問。
全域性變數在主程式退出時由系統收回記憶體空間。
示例(book37.c)
/*
* 程式名:book37.c,此程式用於演示全域性變數的作用域
*/#include
double pi=
3.141592
;// 全域性變數宣告
void
func1()
;// 宣告乙個自定義函式
intmain()
void
func1()
在上面的**中,pi為全域性變數,定義在main()和func1()之外,位於程式的頂部,在main()和func1()函式中都可以訪問它。
執行效果
在某個函式或語句塊的內部宣告的變數稱為區域性變數,它們只能在該函式或語句塊內部的語句使用。
區域性變數在函式或語句塊外部是不可用的。
區域性變數在函式返回或語句塊結束時由系統收回記憶體空間。
函式的引數被當作該函式內的區域性變數。
建議各位再閱讀《c語言函式》的」 九、函式引數的傳遞」章節。
區域性變數和全域性變數的名稱可以相同,在某函式或語句塊內部,如果區域性變數名與全域性變數名相同,就會遮蔽全域性變數而使用區域性變數。
示例(book39.c)
/*
* 程式名:book39.c,此程式演示區域性變數與全域性變數重名的情況.
*/#include
double pi=
3.141592
;// 全域性變數宣告
void
func1()
;// 宣告乙個自定義函式
intmain()
void
func1()
在以上的**中,定義了全域性變數pi,在func1()函式中,定義了區域性變數pi,func1()函式執行的時候,會使用自己的區域性變數pi,不會使用全域性變數pi,所以main函式中位置二輸出pi的值是仍然3.141592。
執行效果
編寫示例程式,把本章節介紹的知識點全部演示一遍,用程式演示可以加深您的理解和映象。
C語言變數作用域
作用域描述程式中可訪問識別符號的區域。乙個c變數的作用域可以是塊作用域,函式作用域,函式原型作用域或檔案作用域。int fun int a q作用域結束 在這個例子中,q的作用域只在內層塊,只有內層塊中的 才能訪問q。在c99中,把塊的概念擴充套件到for迴圈,while迴圈,do while迴圈和...
C語言變數的作用域
什麼叫做 塊呢?塊就是我們在復合語句中的就要 塊,在 塊中的auto 自動變數 是無法超出這個範圍的,一旦超出了這個範圍的話就會消失它的作用,比如 void main 這個main函式的花括號就是乙個 塊,而我們要在它的裡面再定義乙個 塊 這個就是乙個 塊,這是個內部的 塊,雖然是寫在main函式裡...
C語言變數的作用域
作用域是程式中定義的變數存在 或生效 的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。1 在所有函式外部定義的是全域性變數。2 在標頭檔案中定義的是全域性變數。3 在函式或語句塊內部定義的是區域性變數。4 函式的引數是該函式的區域性變數。順便解釋一下,函式的宣告和函式的定義是兩個...