[C] 關於static variable的宣告
static variable跟一般variable的宣告方式, 差別是在程式執行開始到結束之前都存在記憶體中. (1)當static variable為Local variable時: void myFunc(int n) { static int num = 0; num += n; } => num在宣告為static後, 儘管離開myFunc()後仍會一直存在, 而且每次執行myFunc會進行num的累加(而不是從0開始) (2)當static variable為global variable時: 當在a.c中宣告 static int num = 0後, num只能被a.c這個檔案所引用, 而不能被其他.c或.h檔使用(即無法在其他檔案中宣告extern int num;) (NOTE)若在.h檔中宣告int num; 表示每個引用的.c檔會發生錯誤(multiple definition). 若宣告為static int num; 則每個引用的.c檔都會copy一份num變數. 建議最好不要在.h檔中宣告變數, 若需要不同.c檔共用同一個變數, 可以使用: (a)在某個.c檔裡頭宣告, 然後在其.h檔宣告extern. 需要引用該變數的.c檔則將該.h加入 (b)使用function call的方式取得 若每個.c都需要有各自的int num, 則各自宣告為static int num. 恩, 目前理解是如此, 有問題再來修改...