C/C++編程筆記:靜態變量,一篇文章掌握C語言經常使用知識點

今天帶你學會C語言靜態變量知識!另外平安夜快樂哦~編程

靜態變量具備即便超出範圍也能保留其值的屬性!所以,靜態變量在其先前的做用域中保留其先前的值,而不會在新的做用域中再次初始化。微信

 

句法:函數

靜態數據類型var_name = var_value;學習

如下是有關C中靜態變量的一些有趣事實。spa

1)程序運行時,靜態int變量保留在內存中。當聲明瞭該變量的函數調用結束時,普通或自動變量將被破壞。3d

例如,咱們能夠使用static int來計數一個函數被調用的次數,可是自動變量不能用於此目的。視頻

例以下面的程序打印「 1 2」blog

 

輸出:1 2教程

可是下面的程序打印1 1內存

 

輸出:1 1

2)靜態變量是在數據段而不是堆棧段中分配的內存。

3)若是未顯式初始化靜態變量(如全局變量),則初始化爲0。例如,在下面的程序中,x的值打印爲0,而y的值則是垃圾。

 

輸出:0  [some_garbage_value]

4)在C語言中,只能使用常量文字初始化靜態變量。

 

請注意,這種狀況在C ++中不成立。所以,若是將程序另存爲C ++程序,它將編譯並運行正常。

5)在C / C ++中,靜態全局變量和函數也是可能的。這樣作的目的是將變量或函數的範圍限制爲文件。

6)靜態變量不該在結構內部聲明。緣由是C編譯器要求將整個結構元素放在一塊兒(即,結構成員的內存分配應該是連續的)。能夠在函數內部聲明結構(堆棧段)或動態分配內存(堆段),甚至能夠是全局的(BSS或數據段)。不管哪一種狀況,全部結構成員都應駐留在同一內存段中,由於結構元素的值是經過計算元素相對於結構起始地址的偏移量來獲取的。單獨將一個成員分離到數據段將破壞靜態變量的目的,而且可能使整個結構爲靜態。

但願對你們有幫助!

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~

C語言C++編程學習交流圈子,QQ羣1090842465點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習書籍分享:

編程學習視頻分享:

相關文章
相關標籤/搜索