區域性變數與全域性變數

2021-10-14 06:07:35 字數 1089 閱讀 5764

區域性變數與全域性變數的關係是乙個非常重要且細緻的問題,在這方面,稍不注意就非常容易出問題。現稍作總結。

變數的作用域是指變數的使用範圍。根據變數的作用域,可以將變數分為區域性變數與全域性變數。

在乙個函式內復合語句內定義的變數稱為區域性變數。此外,函式的形參也屬於區域性變數。

區域性變數只允許在其定義的函式或復合語句中使用,離開所在的函式或復合語句後該區域性變數將不能使用。

重要說明

區域性變數是在執行該函式或復合語句時自動建立,當該函式或復合語句執行完畢後將自動釋放。所以在不同的函式或復合語句中定義同名的區域性變數,也不會相互干擾。

全域性變數宣告與所有函式之外,可以被所有函式使用。

#include

using

namespace std;

int a=

3,b=5;

//定義了全域性變數a,b

intfun

(int a,

int b)

//函式形參也是a,b

intmain()

//執行結果

8

在上述**中定義了全域性變數a、b,又在main()中定義了區域性變數a,這是被允許的。並且,在main()中呼叫了fun()函式,且實參為main()中定義的a與全域性變數b,注意,fun()是在main()中呼叫的,其實參為main()中的a,並非是全域性變數a。所以實際上傳遞的引數的值為fun(8,5),而不是fun(3,5)。

系統規定,當區域性變數與全域性變數同名時,在該函式或者復合語句內,區域性變數優先於全域性變數,也即「區域性變數優先」原則。

在這種情況下,即在函式或者復合語句內有和全域性變數同名的變數時,當想使用全域性變數,需要在變數前加作用域運算子「::」。

#include

using

namespace std;

int a=3;

//定義了全域性變數a

intmain()

//執行結果

3

區域性變數與全域性變數

根據c語言的說法,區域性變數 定義在方法內部的變數叫區域性變數 全域性變數 定義在方法外部的變數叫全域性變數。區域性變數和全域性變數的主要區別在於二者的生存週期不同。全域性變數的生存週期 靜態分配記憶體,程式執行期間常駐記憶體,直到程式執行結束。區域性變數的生存週期 動態分配記憶體,位於執行緒堆疊中...

全域性變數與區域性變數

區域性變數 在區域性 塊內定義 作用域在區域性 塊內,生命週期在區域性 塊內,結束時銷毀。include void test int main return 0 輸出 1111111111 全域性變數 在所有 塊外定義 作用域是整個工程,生命週期程式開始至結束。工程test 10 10 原始檔sum...

區域性變數與全域性變數

資料的儲存型別 一 變數的作用域 變數的作用域是指變數有效性的範圍,與變數定義的位置密切相關,作用域是從空間這個角度來描述變數的,按照作用域的不同,變數可分為區域性變數和全域性變數。1 區域性變數 在函式 或 塊 內部定義的變數,也稱為內部變數,區域性變數只能在定義它的函式 或 塊 內使用,其他函式...