回覆列表
-
1 # 使用者1407843795475326
-
2 # 還還你理解46805
static用法:1、修飾函式的區域性變數: 特點:有預設值0,只執行一次,執行一開始就開闢了記憶體,記憶體放在全域性2、修飾全域性函式和全域性變數: 特點:只能在本原始檔使用3、修飾類裡面的成員變數: 特點:和1差不多,定義多個static y,但只有一個y,不進入類的大小計算,不依賴於類物件的存在而存在(可直接呼叫,要進行外接宣告)4、修飾類的成員函式: 特點:f():括號裡無this指標,只能呼叫他的本類靜態函式和他的靜態變數,即是用static修飾過的不依賴於類物件的存在而存在(可不進行外接宣告,直接呼叫)
最主要有兩點用途。 1. 讓一個變數長期有效,而不管其是在什麼地方被申明。比如: int fun1() { static int s_value = 0; .... } 那麼fun1不管在什麼地方被呼叫,當函式退出後,s_value最後的值將一直會被系統儲存(相當於一個全域性變數),下次s_value再被用到時,也即當fun1()再次被呼叫時,s_value初始值將是最近被儲存過的值(請注意s_value初始化操作只會被執行一次,即上述s_value =0 這個語句)。 2.避免多個檔案使用了相同的變數名而導致衝突 比如有多個檔案,分別由幾個人獨立開發的。假定他們在各自的檔案中定義相同的“全域性”變數名(僅僅指在他們獨自的檔案中全域性),當系統整合時,由於他們使用了名字一樣的“全域性”變數,導致有難於遇見的問題。解決這個問題方便的做法就是在各自檔案中,在相同的全域性變數申明前加上static修飾符。這樣系統就會為他們分配不同的記憶體,互不影響了。