天天看點

C/C++中全局變量和靜态變量的差別

1. 全局變量的作用域是整個項目,它隻需要在一個源檔案中定義就可以作用于所有的源檔案,其它不包括全局變量定義的檔案需要用extern關鍵字再次聲明這個全局變量。

2. 全局變量、靜态全局變量、靜态局部變量都是在靜态存儲區(全局資料區)中配置設定空間的,而局部變量是在棧上配置設定空間的。

3. 全局變量、靜态變量的生命期和程式生命期是一樣的,在程式結束之後作業系統會回收空間。

4. 全局變量和靜态變量都是儲存在靜态存儲區中,生命期和程式一樣,但是不同的是全局變量的作用域是整個項目,而靜态全局變量是目前程式檔案,靜态局部變量則是目前函數體内。

    全局變量和靜态全局變量、靜态局部變量預設值都是0,也就是在沒有初始化變量值的時候預設為0。

5. 靜态變量包含靜态局部變量和靜态全局變量。

    靜态局部變量具有局部作用域隻對定義自己的函數可見,隻被初始化一次,自從初始化一次之後直到程式運作期間一直都在。

    靜态全局變量具有全局作用域作用于定義它的程式檔案但是不能作用于項目裡的其它檔案,這一點和全局變量不同。靜态全局變量可以被多次初始化。

6. 把局部變量改變為靜态變量之後是改變了它的存儲方式和生命期。

    把全局變量改變為靜态變量之後是改變了它的作用域,限制了使用範圍

7. 看以下幾個例子

繼續閱讀