面試點:關鍵字static
C語言面試題分析之三
1.statict全局變量;
2.普通的全局變量;
全局變量(外部變量)的說明之前再冠以static
就構成了靜态的全局變量。
全局變量本身就是靜态存儲方式,
靜态全局變量當然也是靜态存儲方式。
這兩者在存儲方式上并無不同。
普通的全局變量的作用域是整個源程式,
當一個源程式由多個源檔案組成時,普通的(也就是非靜态)的全局變量在各個源檔案中都是有效的。
而靜态全局變量則限制了其作用域,
即隻在定義該變量的源檔案内有效,
在同一源程式的其它源檔案中不能使用它。由于靜态全局變量的作用域局限于一個源檔案内,隻能為該源檔案内的函數公用,
是以可以避免在其它源檔案中引起錯誤。
static局部變量隻被初始化一次,下一次依據上一次結果值;
static函數在記憶體中隻有一份,普通函數在每個被調用中維持一份拷貝。
static函數的作用域僅在本檔案。隻在目前源檔案中使用的函數應該說明為内部函數(static)。
隻需要在目前源檔案中聲明和定義。
應該在一個頭檔案中聲明,要使用這些函數的源檔案要包含這個頭檔案
把局部變量改變為靜态變量後,是改變了它的存儲方式,即改變了它的生存期。
把全局變量改變為靜态變量後,是改變了它的作用域,
限制了它的使用範圍。