作用域不同:全局變量在整個程序中都是可見的,可以被所有函數訪問;而static變量只在聲明它的文件中可見,不能被其他文件訪問。
生命周期不同:全局變量的生命周期從程序開始到程序結束,而static變量的生命周期是在程序運行過程中,只有在其所屬的函數或代碼塊執行時存在。
可訪問性不同:全局變量可以被其他文件訪問,而static變量只能在聲明它的文件中訪問。
初始化方式不同:全局變量在定義時會進行默認初始化(0),而static變量在局部作用域中默認初始化為0,全局靜態變量初始化為0,局部靜態變量在第一次調用時初始化。
存儲位置不同:全局變量存儲在靜態數據區,而static變量存儲在全局/靜態存儲區(與全局變量不同,static變量只能在定義它的編譯單元中可見)。