static - Introduction
靜態變數(Static Variable)在電腦編程領域指在程式執行前系統就為之靜態分配(也即在執行時中不再改變分配情況)儲存空間的一類變數。與之相對應的是在執行時只暫時存在的自動變數(即局部變數)與以動態分配方式取得儲存空間的一些物件,其中自動變數的儲存空間在呼叫棧上分配與釋放。static + 變數
(1) 宣告在 function 內 ( 記憶體模式 )
這是比較經典的 Case,因為 Static 參數不會隨著 function 結束而消逝,所以可以用來計算 function 被呼叫的次數。
#include "hello.h"
int count(){
static int count = 0;
++count;
return count;
}
(2) 宣告在 function 外 ( 連結模式 ) 假設 a.h 跟 b.h 都設了 void foo() 這個函式,這樣你在 main.c 同時 include 時就會編譯錯誤。你有可能會說那我把 void foo() 個別放在 a.c 跟 b.c 就行,但編譯依然會錯誤。因為在連結 .o 檔時編譯器依然會發現。這時 static 就可避免此情況,有點類似 private 的概念,只有自己看得到就不會產生 ambiguous 的問題。
參考資料 :
https://zh.wikipedia.org/wiki/
https://medium.com/@alan81920/
0 意見:
張貼留言