C/C++編程筆記:靜態(tài)變量,一篇文章掌握C語(yǔ)言常用知識(shí)點(diǎn)
今天帶你學(xué)會(huì)C語(yǔ)言靜態(tài)變量知識(shí)!另外平安夜快樂(lè)哦~
靜態(tài)變量具有即使超出范圍也能保留其值的屬性!因此,靜態(tài)變量在其先前的作用域中保留其先前的值,而不會(huì)在新的作用域中再次初始化。

句法:
靜態(tài)數(shù)據(jù)類(lèi)型var_name = var_value;
以下是有關(guān)C中靜態(tài)變量的一些有趣事實(shí)。
1)程序運(yùn)行時(shí),靜態(tài)int變量保留在內(nèi)存中。當(dāng)聲明了該變量的函數(shù)調(diào)用結(jié)束時(shí),普通或自動(dòng)變量將被破壞。
例如,我們可以使用static int來(lái)計(jì)數(shù)一個(gè)函數(shù)被調(diào)用的次數(shù),但是自動(dòng)變量不能用于此目的。
例如下面的程序打印“ 1 2”

輸出:1 2
但是下面的程序打印1 1

輸出:1 1
2)靜態(tài)變量是在數(shù)據(jù)段而不是堆棧段中分配的內(nèi)存。
3)如果未顯式初始化靜態(tài)變量(如全局變量),則初始化為0。例如,在下面的程序中,x的值打印為0,而y的值則是垃圾。

輸出:0??[some_garbage_value]
4)在C語(yǔ)言中,只能使用常量文字初始化靜態(tài)變量。

請(qǐng)注意,這種情況在C ++中不成立。因此,如果將程序另存為C ++程序,它將編譯并運(yùn)行正常。
5)在C / C ++中,靜態(tài)全局變量和函數(shù)也是可能的。這樣做的目的是將變量或函數(shù)的范圍限制為文件。
6)靜態(tài)變量不應(yīng)在結(jié)構(gòu)內(nèi)部聲明。原因是C編譯器要求將整個(gè)結(jié)構(gòu)元素放在一起(即,結(jié)構(gòu)成員的內(nèi)存分配應(yīng)該是連續(xù)的)??梢栽诤瘮?shù)內(nèi)部聲明結(jié)構(gòu)(堆棧段)或動(dòng)態(tài)分配內(nèi)存(堆段),甚至可以是全局的(BSS或數(shù)據(jù)段)。無(wú)論哪種情況,所有結(jié)構(gòu)成員都應(yīng)駐留在同一內(nèi)存段中,因?yàn)榻Y(jié)構(gòu)元素的值是通過(guò)計(jì)算元素相對(duì)于結(jié)構(gòu)起始地址的偏移量來(lái)獲取的。單獨(dú)將一個(gè)成員分離到數(shù)據(jù)段將破壞靜態(tài)變量的目的,并且可能使整個(gè)結(jié)構(gòu)為靜態(tài)。
希望對(duì)大家有幫助!
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車(chē),快人一步!筆者這里或許可以幫到你~

UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
編程學(xué)習(xí)書(shū)籍分享:

編程學(xué)習(xí)視頻分享:
