什麼是靜態變數,靜態變數有何特點?如何存取靜態變數?

時間 2023-07-22 19:55:10

1樓:wq青春修羅

靜態變數 型別說明符是static。

靜態變數屬於靜態儲存方式,其儲存空間為記憶體中的靜態資料區(在。

靜態儲存區內分配儲存單元),該區域中的資料在整個程式的執行期間一直佔用這些儲存空間(在程式整個執行期間都不釋放),也可以認為是其記憶體地址不變,直。

到整個程式執行結束(相反,而auto自動變數,即動態區域性變數,屬於動態儲存類別,佔動態儲存空間,函式呼叫結束後即釋放)。靜態變數雖在程式的整個執。

行過程中始終存在,但是在它作用域之外不能使用。

另外,屬於靜態儲存方式的量不一定就是靜態變數。 例如:外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

所有的全域性變數都是靜態變數,而區域性變數只有定義時加上型別修飾符static,才為區域性靜態變數。

靜態變數可以在任何可以申請的地方申請,一旦申請成功後,它將不再接受其他的同樣申請。

靜態變數並不是說其就不能改變值,不能改變值的量叫常量。 其擁有的值是可變的 ,而且它會保持最新的值。說其靜態,是因為它不會隨著函式的呼叫和退出而發生變化。

即上次呼叫函式的時候,如果我們給靜態變數賦予某個值的話,下次函式呼叫時,這個值保持不變。

2樓:翼飛

靜態變數的型別關鍵字是static。 靜態變數當然是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數, 例如外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

3樓:溜到被人舔

靜態變數是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數,例如外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

4樓:晚來天欲雪

靜態變數有兩種型別,一種是定義在全域性變數上的全域性靜態變數,另一種是定義在區域性變數上的區域性靜態變數。

5樓:張恩師

靜態變數就是說在處於靜止的狀態下是無法發生的變動大小。

6樓:帳號已登出

這個其實他就代表著一個字面意思,你只需要理解他是靜態的就可以了。

7樓:廉碧玉

我是靜態變數,這就是在不動的時候,它的重量可變動。

8樓:鬱朋

他便靚,淨量變數是三對對他來說的,他那個冰箱是有些有變動,有一些不需要並。

靜態變數有何特點?如何存取靜態變數?

9樓:帳號已登出

靜態變數的型別說明符是static。靜態變數當然是屬於靜態儲存方式,但是屬於靜態儲存方式的量不一定就是靜態變數,例如外部變數雖屬於靜態儲存方式,但不一定是靜態變數,必須由static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

對於自動變數,它屬於動態儲存方式。但是也可以用static定義它為靜態自動變數,或稱靜態區域性變數,從而成為靜態儲存方式。由此看來,一個變數可由static進行再說明,並改變其原有的儲存方式。

常量使用。靜態變數也可以用於儲存常數。具體來說,靜態變數(全域性變數及組合語言裡定義的符號亦同)可用const,constant或final(根據語言決定)等關鍵字標識,這時其值就會在編譯時設定,並且無法在執行時改變。

編譯器通常將靜態常量與文字一起置於目標檔案的文字區域,而非常量初始化資料則置於資料區;而如若有需要,有些編譯器還可選擇為其開闢專用區;為防止常數變數被錯誤的指標寫入覆蓋,亦可在這塊區域啟用記憶體保護機制。

以上內容參考:百科-靜態變數。

10樓:匿名使用者

靜態變數一般用在類或者函式中用作計數器,比如。

如果是在類中,可以使用兩種方式訪問,一種是使用類作用域操作符(::還有一種是成員選擇操作符(.)

在函式中就直接訪問。

11樓:匿名使用者

上面說的不錯,小女子再補充一點,比如一個類class test,有個靜態僅有變數 num

生成3個例項,test t1,t2,t3;

則這三個例項共享這個num,也就是說 若t1將num設定成10,則t2,t3讀取的時候num就是10

反正是共享。

c語言動態變數和靜態變數的區別

12樓:風若遠去何人留

靜態變數,就是在定義的時候,有static 修飾的變數,形式為static type var_name = init_value;

而動態變數,形式為。

type var_name = init_value;

即沒有static 修飾。其中的=init_value均可省略。

區分定義在函式外的全域性變數,和函式內的區域性變數,作用域,生命週期,及無顯式初始化時的初始值,均有區別。

1 動態全域性變數:

作用域為整個專案,即最終編譯成可執行檔案的所有檔案中均可以使用動態全域性變數。

生命週期為從程式執行到程式退出,即貫穿整個執行時間。

無顯式初始化時預設初始化值為0。

2 靜態全域性變數:

作用域為當前檔案,從定義/宣告位置到檔案結尾。

生命週期為從程式執行到程式退出,即貫穿整個執行時間。

無顯式初始化時預設初始化值為0。

3 動態區域性變數:

作用域為當前函式,從定義位置,到其所在的{}的結束位置。

生命週期為從函式呼叫到函式退出。

無顯式初始化時預設初始化值為隨機值。

4 靜態區域性變數:

作用域為當前函式,從定義位置,到其所在的{}的結束位置。

生命週期為從程式執行到程式退出,即貫穿整個執行時間,當下次函式呼叫時,靜態區域性變數不會被再次初始化,而是沿用上次函式退出時的值。

無顯式初始化時預設初始化值為0。

13樓:媯原

最大的區別就是靜態變數在其作用域裡的值會有一個儲存空間,而這個空間在程式結束之前是不會被刪除的,所以靜態變數在執行程式時會保留前一次執行的值,也就是只能被初始化一次。而動態變數是可以一直處於賦值語句中。

14樓:匿名使用者

函式內 函式外。

作用域 存在性 作用域 存在性。

auto變數 register √

靜態區域性變數 √

靜態外部變數 √ 只限本檔案) √

15樓:匿名使用者

全域性變數宣告之前加上static,就是靜態全域性變數。全域性變數和靜態全域性變數都是靜態儲存的;在儲存上無區別。區別在於他們的作用域;全域性變數的作用域是整個源程式,當源程式有多個原始檔組成時,全域性變數在各個源程式檔案都是有效的;而靜態全域性變數怎被限制了作用域,只在定義該變數的原始檔內有用在同一程式的其他原始檔不能使用!

還有靜態全域性變數只初始化一次,防止在其他原始檔呼叫!而全域性變數可以再其他原始檔初始化!!

16樓:月月相望

區域性變數和全域性變數。

定義位置 儲存區 初值區域性變數 函式內部。

含形參) 動態儲存區 除形參外,隨機值全域性變數 函式外部 靜態儲存區 0

生命期(作用範圍):

區域性變數 只有所在函式可以使用。所在函式執行開始:系統分配記憶體單元;

所在函式執行完畢:系統**記憶體單元。

全域性變數 從定義處至檔案尾的所有函式都可引用。一般置於檔案開始處。

程式執行開始:系統分配記憶體單元;程式執行完畢:系統**記憶體單 元。

靜態變數與非靜態變數的區別

17樓:尤尤老師

1、儲存位置不同。

靜態變數:儲存在全域性資料區(靜態資料區)。

非靜態變數叫動態變數:儲存在記憶體出棧資料區。

2、生命期不同。

動態變數:根據你定義的位置確定,比如你在一個函式中定義的,那麼超出該函式範圍變數將失效。

靜態變數:程式結束時才釋放。

3、作用域不同。

動態變數:同樣的要根據你定義的位置才能確定,和第二點的一樣。

靜態變數:當前檔案中有效。

php中static靜態變數和普通變數的區別

愛笑的高大傻 php中static 靜態變數和普通變數的區別 在變數的前面加上static 就構成了靜態變數 static 變數 static變數和普通變數的區別在於非靜態全域性變數的作用域是整個源程式,當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。而靜態全域性變數則限...

在C語言中關於全域性變數 靜態變數 的用法1 全域性變數與靜態變數的區別2 用static定義變數 常量以及定

1.1 某個檔案中的全域性變數是任何其他檔案都可見的,只要extern宣告一下,任何檔案均可使用 2 若在定義變數前加static,說明該變數只有該檔案內部可以使用,其他檔案無法使用。即static限定了變數的可見性,但生命週期仍是全域性的 2.static char a static const ...

C我想在類中定義靜態變數,但是不知道為什麼會出錯

類中是可以定義類的,這叫巢狀類。程式沒有問題,就是需要調整下變數宣告的順序。另外靜態成員變數要初始化。雖然你這個例子不初始化沒有問題,但是到使用的時候肯定是會報錯的。class linkstack public static stack data data top linkstack stack d...