c++中static變量和全局變量的區(qū)別

c++
小樊
98
2024-07-17 16:55:44

  1. 作用域不同:全局變量在整個(gè)程序中都是可見的,可以被所有函數(shù)訪問;而static變量只在聲明它的文件中可見,不能被其他文件訪問。

  2. 生命周期不同:全局變量的生命周期從程序開始到程序結(jié)束,而static變量的生命周期是在程序運(yùn)行過程中,只有在其所屬的函數(shù)或代碼塊執(zhí)行時(shí)存在。

  3. 可訪問性不同:全局變量可以被其他文件訪問,而static變量只能在聲明它的文件中訪問。

  4. 初始化方式不同:全局變量在定義時(shí)會(huì)進(jìn)行默認(rèn)初始化(0),而static變量在局部作用域中默認(rèn)初始化為0,全局靜態(tài)變量初始化為0,局部靜態(tài)變量在第一次調(diào)用時(shí)初始化。

  5. 存儲(chǔ)位置不同:全局變量存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū),而static變量存儲(chǔ)在全局/靜態(tài)存儲(chǔ)區(qū)(與全局變量不同,static變量只能在定義它的編譯單元中可見)。

0