天天看點

面試點:關鍵字static(C語言面試題分析之三) 一.            static全局變量與普通的全局變量的差別是什麼?   全局變量分為兩種:二.static局部變量和普通局部變量的差別是什麼?三.static函數與普通函數的差別是什麼?四.總結篇

面試點:關鍵字static

C語言面試題分析之三

1.statict全局變量;

2.普通的全局變量;

全局變量(外部變量)的說明之前再冠以static

就構成了靜态的全局變量。

全局變量本身就是靜态存儲方式,

靜态全局變量當然也是靜态存儲方式。

這兩者在存儲方式上并無不同。

普通的全局變量的作用域是整個源程式,

當一個源程式由多個源檔案組成時,普通的(也就是非靜态)的全局變量在各個源檔案中都是有效的。

而靜态全局變量則限制了其作用域,

即隻在定義該變量的源檔案内有效,

在同一源程式的其它源檔案中不能使用它。由于靜态全局變量的作用域局限于一個源檔案内,隻能為該源檔案内的函數公用,

是以可以避免在其它源檔案中引起錯誤。 

static局部變量隻被初始化一次,下一次依據上一次結果值;

static函數在記憶體中隻有一份,普通函數在每個被調用中維持一份拷貝。

static函數的作用域僅在本檔案。隻在目前源檔案中使用的函數應該說明為内部函數(static)。

隻需要在目前源檔案中聲明和定義。

應該在一個頭檔案中聲明,要使用這些函數的源檔案要包含這個頭檔案

把局部變量改變為靜态變量後,是改變了它的存儲方式,即改變了它的生存期。

把全局變量改變為靜态變量後,是改變了它的作用域,

限制了它的使用範圍。

繼續閱讀