C語言中的靜態變量和全局變量在作用域和生命周期上有所區別。
全局變量:全局變量定義在函數外部,可以被程序中的所有函數訪問,即具有全局作用域。
靜態變量:靜態變量定義在函數內部,只能在定義它的函數中使用,即具有局部作用域。
全局變量:全局變量在程序開始執行時被創建,在程序結束時銷毀,其存儲空間一直存在于整個程序運行期間。
靜態變量:靜態變量在程序開始執行時被創建,在程序結束時銷毀,其存儲空間也一直存在于整個程序運行期間。
全局變量:全局變量沒有顯式地初始化時,默認初始化為0或者空指針,也可以在定義時指定初始值。
靜態變量:靜態變量沒有顯式地初始化時,默認初始化為0或者空指針,也可以在定義時指定初始值。
全局變量:全局變量可以被程序中的任何函數訪問和修改。
靜態變量:靜態變量只能在定義它的函數中訪問和修改。
總結:靜態變量和全局變量在作用域上的區別是靜態變量具有局部作用域,而全局變量具有全局作用域;在生命周期上的區別是靜態變量和全局變量的存儲空間都一直存在于整個程序運行期間。