古詩詞大全網 - 成語用法 - static全局變量與普通的全局變量有什麽區別?

static全局變量與普通的全局變量有什麽區別?

static全局變量只初使化壹次,防止在其他文件單元中被引用;

全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。

這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變量的作用域是整個源程序,當壹個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同壹源程序的其它源文件中不能使用它。

由於靜態全局變量的作用域局限於壹個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。從以上分析可以看出,把局部變量改變為靜態變量後是改變了它的存儲方式即改變了它的生存期。

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

static全局變量只初使化壹次,防止在其他文件單元中被引用;

全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。

這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變量的作用域是整個源程序,當壹個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同壹源程序的其它源文件中不能使用它。

由於靜態全局變量的作用域局限於壹個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。從以上分析可以看出,把局部變量改變為靜態變量後是改變了它的存儲方式即改變了它的生存期。

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