區域性變數和全域性變數的區別

2022-09-17 09:06:12 字數 1122 閱讀 4996

背景:上午看書閱及這兩對概念,有很多相似之處,故記之。

一. 區域性變數&全域性變數

1區域性變數:「在函式內定義的變數」,

即在乙個函式內部定義的變數,只在本函式範圍內有效。

2全域性變數:「在函式外定義的變數」,

即從定義變數的位置到本原始檔結束都有效。  

目的:增加函式間資料聯絡的渠道。由於同一檔案中的所有函式都能引用全域性變數的值,因此如果在乙個函式中改變了全域性變數的值,

就能影響到其他函式中全域性變數的值,相當於各個函式之間有直接的傳遞渠道。

為了便於區別兩者,c程式設計人員有乙個習慣,將全域性變數名的第乙個字母用大寫表示。如:float max=0,min=0;  //定義全域性變數max,min

二. 內部函式&外部函式

1.內部

函式:只被本檔案中其他函式所呼叫。

定義內部函式時,在函式名、函式型別前加static。 static 型別名 函式名(形參表); 例如,static int fun(int a,int b);

2.外部函式:可供其他檔案呼叫。

定義外部函式時,在函式首部左端加extern。extern int fun(int a,int b);

若在定義函式時省略extern,則預設為外部函式。

拓展乙個問題,為什麼c語言要求在定義所有的變數時都要指定變數的型別?

所謂型別,就是對資料分配儲存單元的安排,包括儲存單元的長度(佔多少位元組)以及資料的儲存形式。不同的型別分配不同的長度和儲存形式。

在計算機中,資料是存放在儲存單元中的,它是具體存在的(在數學中,數和數的運算都是抽象的)。而且,儲存單元是由有限的位元組構成的,

每乙個儲存單元中存放資料的範圍是有限的,不可能存放「無窮大」的數,也不能存放迴圈小數。

最後附上c語言包含的資料型別

end 謝謝!

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

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

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

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

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

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