全域性變數和區域性變數

2021-08-14 03:26:01 字數 797 閱讀 7540

一、區域性變數

•區域性變數—內部變數,儲存於棧中

–定義:在函式內定義,只在本函式內有效

–說明:

»main中定義的變數只在main中有效

»不同函式中同名變數,佔不同儲存單元

»形參屬於區域性變數

»可定義在復合語句中且只在本復合語句中有效的變數

»在未被賦值或初始化的情況下,初值為隨機數

二、全域性變數

定義:在函式外定義,可為本檔案所有函式共用

有效範圍:從定義變數的位置開始到本原始檔結束

若全域性變數與區域性變數同名,則預設情況下全域性變數被遮蔽,即區域性變數可見

由於同一檔案中的所有函式都能引用全域性變數的值,因此如果在乙個函式中改變了全域性變數的值,就能影響到其他函式.全域性變數在程式執行過程中它們佔據固定的儲存單元—-全域性資料區,預設值為0.

如果塊內定義的區域性變數與全域性變數同名,則在塊內區域性變數優先,但可以通過域運算子::訪問同名全域性變數。

三、函式呼叫機制

每當函式呼叫發生時,系統都會做以下工作:

(1)建立棧空間。

(2)保護現場。將當前主調函式的執行狀態和返回位址儲存在棧中。

(3)為被調函式中的區域性變數(包括形參)分配棧空間,並將實參值傳遞給形參。

(4)執行被調函式直至返回語句或函式結束處。

(5)釋放被調函式的所有區域性變數棧空間。

(6)恢復現場。取出主調函式的執行狀態及返回位址,釋放棧空間。

(7)返回到呼叫函式繼續執行。

全域性變數和區域性變數

全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...

全域性變數和區域性變數

區域性變數 在方法中開闢的變數,只在方法中有效 區域性變數在定義時不會初始化,要顯式的給它乙個值 如未給它乙個初始值,雖然編譯的時候會通過,但是執行的時候會產生為初始化錯誤!方法呼叫 執行完,區域性變數便會自動釋放。在方法內的語句塊中建立的變數在編譯時假如未初始,如若使用,也會報未初始化錯誤!呼叫的...

全域性變數和區域性變數

通常的認為是定義在函式外面的就稱之為全域性變數 函式體內的稱之為區域性變數 在函式中與全域性變數同名的時候 情形1 函式內部的變數名如果第一次出現,且出現在 前面,即被視為定義乙個區域性變數。num 100 定義乙個全域性變數 defdemo num 100 這裡面的實際上是定義了乙個區域性的變數 ...