2020年4月12日 星期日

C 語言 - static

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 意見:

張貼留言

Popular Posts