另一種是區域性變數, 如在for迴圈中定義的變數, 在函式中的變數, 這樣的變數在**快執行時則有效, **一旦執行完畢, 則會立即被系統從記憶體中清理出去.
1.函式內部
普通函式中的變數, 隨函式的執行而存在, 而在函式內部加上static修飾的變數, 則隨函式的存在而存在, 主要前面是執行, 後面是函式的存在, 當static放到乙個函式內部修飾變數時, 變數就能在整個程式的執行過程中保持存在而不是僅僅在整個函式的執行過程中存在, 因此有了一點全域性變數的特性.
實際上static int res並不算是函式fac中的**, 因為, 每次呼叫fac函式時, 這行**並不執行, 初始化res是在程式裝入記憶體中時完成的, 其位址不再變化, 如果沒有對靜態變數顯式宣告, 系統預設初始化為0, 而這行**寫在fac函式內是表明, 這個變數只是用來給fac函式訪問的.
看看下面這個程式, 呼叫10次fac函式, res將被修改為10
#include
int fac()
int main()
2.函式外部
不加static的全域性變數作用在不同檔案之間, 和本檔案的所有函式中, 對函式外部的變數加static修飾之後, 變數則失去了誇檔案訪問的特性, 只能在本檔案中被訪問
C語言 關鍵詞static解釋
static static在c語言中可以修飾變數或者函式。總得來說,用static修飾的變數或是函式具有靜態的特性。static修飾區域性變數 static修飾區域性變數的主要改變在於改變了區域性變數的生命週期。一般的區域性變數,生命週期都是在它的函式內,在函式結束的時候,就會釋放變數。再次進入函式...
C語言中volatile關鍵詞的用法
volatile指出變數是隨時可能變化的 定義為volatile的變數是說這個變數可能會被意想不到地改變,這樣,編譯器就不會去假設這個變數的的值了。精確得講就是優化器在用到這個變數時必須每次都小心地重新讀取這個變數的值,而不是使用儲存在暫存器裡的備份 volatile使用的地方 1 中斷服務程式中修...
static 關鍵詞的使用
2.1 什麼叫函式重複定義 我們經常會遇到報錯,說變數或者函式重複定義。那麼,在此,首先我舉例說明一下什麼叫函式的重複定義。檔案 void test 檔案void test 那麼,在編譯的時候是不會報錯的,但是,在鏈結的時候,會出現報錯 multiple definition of test 因為在...