1、static修飾區域變數
在函式體內,只初始化一次,被static宣告過的區域變數在呼叫程序中值不變,原因:在任意函式內定義區域變數,存盤在執行緒中的堆疊區,出函式時自動摧毀,所以在每次呼叫這個函式時,區域變數的初始值都為定義的值在進行運算,static在修飾區域變數時,存盤在靜態區,函式回傳時值保持不變,出函式不銷毀,下一次進入函式依然存在,
1 void test() 2 { 3 int a = 10; 4 a++; 5 printf("%d ", a); 6 } 7 8 void static_test() 9 { 10 static int a = 10; 11 a++; 12 printf("%d ", a); 13 } 14 int main() 15 { 16 test(); 17 static_test(); 18 test(); 19 static_test(); 20 return 0; 21 }
上述代碼運行結果為11,11,11,12,主要是因為static定義過的區域變數存盤在靜態變數區,在呼叫程序中值不變,
2、static修飾全域變數
被static宣告過的全域變數無法被其他檔案呼叫,只能被當前檔案所呼叫,其他檔案可以定義與其同名的變數,兩者互不影響,未被static宣告過的全域變數加extern關鍵字可以被呼叫, 在定義不需要與其他檔案共享的全域變數時,加上static關鍵字能夠有效地降低程式模塊之間的耦合,避免不同檔案同名變數的沖突,且不會誤使用,
3、static修飾函式
和全域變數類似,被static宣告過的函式無法被其他檔案呼叫,只能被當前檔案所呼叫,不同檔案可以使用相同名字靜態函式 ,非靜態函式可以在另一個檔案直接參考,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537981.html
標籤:C
上一篇:數字黑洞
