c 語言中有三個地方可以宣告變數:
在函式或塊內部的區域性變數
在所有函式外部的全域性變數
在形式引數的函式引數定義中
(1)區域性變數
在某個函式或塊的內部宣告的變數稱為區域性變數。它們只能被該函式或該**塊內部的語句使用。區域性變數在函式外部是不可知的。下面是使用區域性變數的例項。在這裡,所有的變數 a、b 和 c 是 main() 函式的區域性變數。
#include int main ()
(2)全域性變數
全域性變數是定義在函式外部,通常是在程式的頂部。全域性變數在整個程式生命週期內都是有效的,在任意的函式內部能訪問全域性變數。
全域性變數可以被任何函式訪問。也就是說,全域性變數在宣告後整個程式中都是可用的。下面是使用全域性變數和區域性變數的例項:
#include /* 全域性變數宣告 */
int g;
int main ()
在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,如果兩個名字相同,會使用區域性變數值,全域性變數不會被使用。下面是乙個例項:
在程式中,區域性變數和全域性變數的
#include /* 全域性變數宣告 */
int g = 20;
int main ()
(3)形式引數
函式的引數,形式引數,被當作該函式內的區域性變數,如果與全域性變數同名它們會優先使用。下面是乙個例項:
#include /* 全域性變數宣告 */
int a = 20;
int main ()
/* 新增兩個整數的函式 */
int sum(int a, int b)
全域性變數與區域性變數在記憶體中的區別:
全域性變數儲存在記憶體的全域性儲存區中,占用靜態的儲存單元;
區域性變數儲存在棧中,只有在所在函式被呼叫時才動態地為變數分配儲存單元。
c語言塊級作用域 C語言 作用域
c語言 作用域 型別作用域 生命週期 auto變數 一對 內 當前函式 static區域性變數 一對 內 整個程式執行期 extern變數 整個程式 整個程式執行期 static全域性變數 當前檔案 整個程式執行期 extern函式 整個程式 整個程式執行期 static函式 當前檔案 整個程式執行...
C語言 作用域
復合語句指if while等條件語句 區域性變數 auto自動變數 auto可寫可不寫 一般情況下 塊 內部定義的變數都是自動變數 全域性變數 在函式外定義,可被本檔案及其它檔案中的函式所共用,若其它檔案中的函式呼叫此變數,須用extern宣告 變數型別 定義位置 宣告週期 區域性變數 函式或復合語...
c語言中作用域
當變數在程式中的某個部分被宣告時,它只有在程式的一定區域被訪問。這個區域由識別符號 變數 的作用域決定。在c語言中,一共有四種作用域,分別是 塊作用域 檔案作用域 原型作用域和函式作用域。由 標識的區域稱為 塊作用域。在 塊內部宣告的識別符號都具有 塊作用域。各個 塊的作用域不重疊。任何 塊之外的宣...