變量和常量

什麼是變量?變量的特點?

其值在其作用域內可以改變的量稱爲變量。一個變量應該有一個名字,在內存中佔據一定的存儲空間。變量在使用前必須要定義,每個變量都有自己的地址。變量依據其定義的類型,分爲不同類型,如整型變量、字符變量、浮點型變量、指針型變量等。變量的值可以發生改變,意味着它可以被覆蓋、被寫入、被賦值。每個變量必須要有一個名字和它所在內存空間綁定。
變量的三個特點:
變量的數據類型:主要說明變量佔據內存空間大小;
變量的作用域:變量的有效性的範圍,即變量的使用範圍;
變量的存儲類型:變量在內存中的存儲方式。不同的存儲方式,影響變量在內存中的內存週期。

進程的虛擬地址空間的劃分

這裏寫圖片描述

如圖所示,每個進程分配4G的虛擬地址空間,其中1G爲內核空間,剩餘3G爲用戶空間。用戶空間分爲:棧空間、堆空間、數據區、代碼段。
棧空間:放的是局部變量、函數形參、自動變量。棧空間特點爲:先進後出、空間由系統管理。棧空間函數執行完空間就被釋放。局部變量未初始化時,系統初始化爲一個隨機值(垃圾值)。
堆空間:malloc、ralloc、calloc這些函數分配的空間在堆空間。特點:用戶管理、先進先出(先分配的先釋放)。
數據區:分爲三段:bss、or、靜態數據區。生命週期爲整個程序執行完,空間被釋放。
bss:放的是未初始化的全局變量,當全局變量未初始化時,系統初始化爲0。
or段:only read段,保存的是常量,只能讀,不能被修改。
靜態數據區:static修飾的變量、初始化的全局變量。

局部變量與全局變量的區別

分配區域:
局部變量分配在棧空間,全局變量分配在數據區。
生命週期:
局部變量函數執行完釋放,全局變量整個程序執行完釋放。
初始化:
局部變量未初始化時,系統初始化爲垃圾值,全局變量系統初始化爲0。

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