Static全局變量與普通的全局變量有什么區別?
答:
全局變量(外部變量)的說明之前再冠以static就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。
這兩者在存儲方式上並無不同。這兩者的區別在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個原文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。
由於靜態全局變量的作用域限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。
static全局變量與普通的全局變量的區別是static全局變量只初始化一次,防止在其他文件單元被引用。
2.static函數與普通函數有什么區別?
答:
static函數與普通的函數作用域不同。盡在本文件中。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件。
static函數與普通函數最主要區別是static函數在內存中只有一份,普通靜態函數在每個被調用中維持一份拷貝程序的局部變量存在於(堆棧)中,全局變量存在於(靜態區)中,動態申請數據存在於(堆)