C++ 靜態全局變量與普通全局變量

一、存儲區域:

1、棧:由編譯器在需要的時候分配,在不需要的時候自動清除的變量的存儲區域。通常存儲局部變量,函數參數。

2、堆:由new分配的內存塊,需要手動釋放。如果程序員沒有手動釋放,在程序運行結束後,操作系統自動回收。

3、自由存儲區:由malloc等分配的內存塊,與堆相似,用free來釋放。

4、全局/靜態存儲區:用來存放全局變量和靜態變量。在C中,全局變量區分初始化的和未初始化的,在C++中不再區分,被分配在同一塊內存區中。

5、常量存儲區:比較特殊的存儲區,用來存放常量,不允許修改。

二、普通全局變量與靜態全局變量的存放位置

全局變量、靜態全局變量、靜態局部變量都存放在全局/靜態存儲區中。(即存放位置相同)。

三、普通全局變量與靜態全局變量的作用域

1、全局變量:全局變量具有全局作用域(文件作用域),通常在整個工程中有效,定義在一個文件中,在其他文件中使用extern聲明即可使用。

2、靜態全局變量:靜態全局變量同樣具有全局作用域,但是靜態全局變量智能作用在定義該變量的文件中,即使使用extern聲明也不行。



補充:20150819

四、靜態局部變量

靜態局部變量跟局部變量一樣,也具有局部作用域,即在定義的函數體外部無法訪問。與普通局部變量不同的是,靜態局部變量跟全局變量和全局靜態變量一樣,存儲在靜態存儲區,但只能被初始化一次,初始化完成後直到程序結束一直存在。

發佈了27 篇原創文章 · 獲贊 21 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章