區域性變數和全域性變數

2021-07-16 13:35:13 字數 1009 閱讀 6251

一、區域性變數

在乙個函式內部定義的變數是內部變數,它只是在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的。這稱為「區域性變數」。

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

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

(3)形式引數也是區域性變數。例如上面f1函式中的形參a,也只在f1函式中有效。其他函式可以呼叫f1函式,但不能引用f1函式的形參a。

(4)在乙個函式內部,可以在復合語句中定義變數,這些變數只在本復合語句中有效,這種復合語句也稱為「分程式」活「程式塊」。

二、全域性變數

程式的編譯單位是源程式檔案,乙個原始檔可以包含乙個或若干個函式。在函式內定義的變數是區域性變數,而在函式之外定義的變數稱為外部變數,外部變數是全域性變數(也稱全程變數)。全域性變數可以為本檔案中其他函式所共用。它的有效範圍從定義變數的位置開始到本原始檔結束。

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

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

說明:(1)設定全域性變數的作用是增加了函式間資料聯絡的渠道。由於同一檔案中的所有函式都能引用全域性變數的值,因此如果在乙個函式中改變了全域性變數的值,就能影響到其他函式,相當於各個函式間有直接的傳遞通道。由於函式的呼叫只能帶回乙個返回值,因此有時可以利用全域性變數增加函式間的聯絡渠道,通過函式呼叫得到乙個以上的值。

為了便於區別全域性變數和區域性變數,在c程式設計人員中有乙個不成文的約定(但非規定),將全域性變數名的第乙個字母用大寫表示。

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

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

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

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

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

對於乙個完整的程式,在記憶體中的分布情況如下圖 區 low address 全域性資料區 堆區 棧區 high address 一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部的靜態區域性變數 也存放在全域性資料區。...