4 11 區域性變數和全域性變數

2021-06-28 23:27:59 字數 1479 閱讀 6990

在乙個函式內部定義的變數是內部變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的。同樣,在復合語句中定義的變數只在本復合語句範圍內有效。這稱為

區域性變數(local variable)

。如:

對區域性變數的一些說明:

1) 主函式main中定義的變數(m, n)也只在主函式中有效,不會因為在主函式中定義而在整個檔案或程式中有效。主函式也不能使用其他函式中定義的變數。

2) 不同函式中可以使用同名的變數,它們代表不同的物件,互不干擾。例如,在f1函式中定義了變數b和c,倘若在f2函式中也定義變數b和c,它們在記憶體中佔不同的單元,不會混淆。

3) 可以在乙個函式內的復合語句中定義變數,這些變數只在本復合語句中有效,這種復合語句也稱為分程式或程式塊。

4) 形式引數也是區域性變數。

例如f1函式中的形參a也只在f1函式中有效。其他函式不能呼叫。

5) 在函式宣告中出現的引數名,其作用範圍只在本行的括號內。

實際上,編譯系統對函式宣告中的變數名是忽略的,即使在呼叫函式時也沒有為它們分配儲存單元。

例如:

int max(int a, int b);//函式宣告中出現a、b

int max(int x, int y) //函式定義,形參是x、y

{ cout編譯時認為max函式體中的a和b未經定義。前面已介紹,程式的編譯單位是源程式檔案,乙個原始檔可以包含乙個或若干個函式。在函式內定義的變數是區域性變數,而在函式之外定義的變數是外部變數,稱為

全域性變數(global variable,也稱全程變數)

。全域性變數的有效範圍為從定義變數的位置開始到本原始檔結束。如:

p、q、c1、c2都是全域性變數,但它們的作用範圍不同,在main函式和f2函式中可以使用全域性變數p、q、c1、c2,但在函式f1中只能使用全域性變數p、q,而不能使用c1和c2。

在乙個函式中既可以使用本函式中的區域性變數,又可以使用有效的全域性變數。

對全域性變數的一些說明:

1) 設全域性變數的作用是增加函式間資料聯絡的渠道。

2) 建議不在必要時不要使用全域性變數,因為:

3) 如果在同乙個原始檔中,全域性變數與區域性變數同名,則在區域性變數的作用範圍內,全域性變數被遮蔽,即它不起作用。

變數的有效範圍稱為變數的

作用域(scope)

。歸納起來,變數有4種不同的作用域、檔案作用域(file scope)、函式作用域(function scope)、塊作用域(block scope)和函式原型作用域(function prototype scope)。檔案作用域是全域性的,其他三者是區域性的。

除了變數之外,任何以識別符號代表的實體都有作用域,概念與變數的作用域相似。

python 09 區域性變數和全域性變數

區域性變數是在函式內部定義的變數,只能在函式內部使用 全域性變數是在函式外部定義的變數 沒有定義在某 個函式內 所有函式內部都可以使用這個變數 提示 在其他的開發語言中,大多不推薦使用全域性變數 可變範圍太大,導致程式不好維護 區域性變數是在函式內部定義的變數,只能在函式內部使用 函式執行結束後,函...

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。這句話應該錯了,應該是放在常量資料段 全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用...

全域性變數 靜態全域性變數 靜態區域性變數 區域性變數

全域性和靜態變數都在堆裡。全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用在定義它的那個檔案裡,卻不能用在程式中...