千萬(wàn)別問(wèn)我現(xiàn)在過(guò)得好不好,我怕我一張嘴,嘴里冒出的全是孤獨(dú)的味道!



static
static分兩種情況,修飾局部變量和全局變量。
static修飾局部變量
局部變量是存儲(chǔ)在棧區(qū)的,它的生命周期是整個(gè)代碼的塊,作用域也是整個(gè)代碼塊,一旦出了代碼塊,存儲(chǔ)局部變量的這個(gè)棧內(nèi)存就會(huì)被回收,局部變量也就被銷毀了。
當(dāng)我們用static修飾局部變量時(shí),變量被稱為靜態(tài)局部變量,和局部變量、全局變量,靜態(tài)全局變量一樣,是存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū),所以這塊內(nèi)存直到程序結(jié)束才會(huì)銷毀。
一個(gè)簡(jiǎn)單的例子:
for循環(huán)調(diào)用一個(gè)函數(shù),該函數(shù)內(nèi)部有一個(gè)局部變量number,,初始值為0,每調(diào)用一次,number自增1;
如果沒(méi)有static修飾,打印結(jié)果,每次都是1了;如果有static修飾,每調(diào)用一次,number在原有基礎(chǔ)上都自增1
static修飾全局變量
當(dāng)全局變量沒(méi)有使用static修飾符時(shí),其存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū),知道程序結(jié)束才銷毀。也就是其作用域是整個(gè)源程序。我們可以使用extern關(guān)鍵字來(lái)引用這個(gè)全局變量(可以不用引入頭文件)
當(dāng)全局變量用static修飾時(shí),其生命周期沒(méi)有變,依舊是在程序結(jié)束時(shí)才銷毀。但是其作用域變了,以前是整個(gè)源程序,現(xiàn)在只限于申明它的這個(gè)文件才可見,即使用extern引用也不行,不然會(huì)報(bào)錯(cuò)。