回覆列表
-
1 # ikoit49888
-
2 # 使用者1993062731765
靜態變數只在第一次進入函式的時候初始化,而全域性變數是進入程式的時候就初始化了,另外,全域性變數是對整個程式可見的,靜態變數只在函式內可見。(如果是類的靜態變數的話,倒是可以用類名加變數名訪問,但是可以private,機,而全域性變數不能設定許可權)
靜態變數只在第一次進入函式的時候初始化,而全域性變數是進入程式的時候就初始化了,另外,全域性變數是對整個程式可見的,靜態變數只在函式內可見。(如果是類的靜態變數的話,倒是可以用類名加變數名訪問,但是可以private,機,而全域性變數不能設定許可權)
(1)靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。 (2)靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後, 儘管該變數還繼續存在,但不能使用它。 (3)對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。 根據靜態區域性變數的特點, 可以看出它是一種生存期為整個原始檔的量。雖然離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。 因此,當多次呼叫一個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的副作用(尤其是短名全域性變數的變數名汙染很嚴重),因此仍以採用區域性靜態變數為宜。 簡單的說靜態區域性變數與全域性變數最明顯的區別就在於:全域性變數在其定義後所有函式都能用,但是靜態區域性變數只能在一個函數里面用。