static 函式 與 普通函式的區別

2021-10-14 18:17:10 字數 653 閱讀 8231

static 函式 與 普通函式的區別

用static修飾的函式 本限定在 本原始檔中 不能被本原始碼檔案以外的**檔案呼叫 

而普通函式,預設是extern 的,也就是說,可以被其他**檔案呼叫該函式

在函式的返回型別前 加上static ,函式就被定義成為靜態函式。

普通函式的定義和宣告預設情況下是 extern的,但靜態函式只是在宣告它的檔案中可見

因此可以避免在其他原始檔中引起錯誤

從以上分析可以看出,把區域性變數改變為靜態變數後是改變了他的儲存方式即改變了他的生存期。

只在當前原始檔中使用的函式應該說明為內部函式,內部函式應該在當前原始檔中說明和定義。

對於在當前原始檔以外使用的函式,應該在乙個標頭檔案中說明,要使用這些函式的原始檔要包含這個標頭檔案。

static函式在記憶體中只有乙份,普通靜態函式在每個被呼叫中維持乙份拷貝程式的區域性變數存在與(堆疊)中,

全域性變數存在於(靜態區)、動態申請在(堆)

static全域性變數 和 普通的全域性變數 

都是靜態儲存方式

區別在於非靜態的全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。

靜態全域性變數則限制了其作用域,即只在定義該變數的原始檔內有效,在同一源程式的其他檔案中不能使用它。

static函式與普通函式

全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方 式。這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態 的全域性變數在各個原始檔中都...

static函式與普通函式區別

全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方 式。這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態 的全域性變數在各個原始檔中都...

C C 之static函式與普通函式

全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方 式。這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態 的全域性變數在各個原始檔中都...