【C++】全局變量、靜態全局變量、局部變量與靜態局部變量

1.普通全局變量

​ 普通全局變量是定義在函數和類外的或由extern標識或直接定義沒有static標識的變量。

​ 各個類型的變量之間最主要的區別就是作用域的不同了,普通全局變量的作用域在整個源程序中,全局變量對整個源程序中都是可見的,無論源程序是由單個文件還是多個文件組成,普通全局變量具有external鏈接屬性,所以普通全局變量在整個源程序的各個文件中都可以被引用。

2.靜態全局變量

​ 靜態全局變量是定義在函數和類外的由static標識的變量。

​ 靜態全局變量具有文件作用域,具有internal鏈接屬性,只能在定義的文件中使用,在其他文件中可以定義同名的變量,而全局變量則不行,這裏要注意靜態全局變量與類靜態全局變量是不同的,類靜態全局變量受到類權限限制,不同的訪問權限就之間決定了類靜態全局變量的作用域,類全局變量的使用與類一致,能使用類的地方就能使用類全局變量。

​ 關於普通全局變量和靜態全局變量的區別,我一直沒有弄得很清楚,我有在網上查閱很多bolg,大家的說法都出奇的一致,我上面寫的也是在查閱很多blog後總結的,但是我實際測試時,普通全局變量和靜態全局變量似乎都可以被其他文件使用,並且 在其他文件中定義靜態全局變量似乎也沒有報錯,沒有弄明白這個其他文件指的是什麼文件。

在這裏插入圖片描述

在這裏插入圖片描述

3.普通局部變量

​ 普通局部變量是定義在函數內的沒有static標識的變量。

​ 普通局部變量具有塊作用域,生命週期從定義開始到跳出函數結束,普通局部變量每次使用都會初始化一次。

4.靜態局部變量

​ 靜態局部變量的作用於和普通局部變量一致,但是靜態局部變量的內存地址在函數結束後不會被銷燬,且會保存賦值結果,靜態局部變量和靜態全局變量一樣會一直駐留在靜態區,靜態局部變量只會初始化一次,在下一次函數被調用時不會再初始化而是直接調用。

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