C語言初學--對全局變量和局部變量的理解

首先 在這之前我們應該要知道進程虛擬空間: 系統程序中訪問的內存地址不是實際的物理內存地址,而是一個虛擬地址,然後由操作系統將這個虛擬地址映射到適當的物理內存地址上。

系統給了我們4個g的虛擬地址空間 其中一個1個g給了內核 3個g給了我們用戶 而這三個g我們分爲四個區

1 棧空間: 這裏面有局部變量 函數形參 自動變量 、(這個是由系統管理 並且先進來的後出去 ,簡稱先進後出)

2堆空間: malloc calloc ralloc (先進先出,用戶管理)

3全局數據區: bbs(未初始化的全局變量) ordata(常量) 靜態數據區(初始化的全局變量 static修飾的變量)

4代碼段


就全局變量和局部變量來講 有以下幾點不同 

第一個 作用域 前者文件結束前有效 後者只在當前函數有效

第二個 存儲類型 前者在棧空間 後者在全局數據區

第三個 初始化 如果沒有給他一個初值 前者會自動歸零 後者回事一個垃圾值

第四個 如果兩個變量同名 那麼局部變量優先執行                               

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章