在C++中,靜態(tài)變量(static variable)是一種特殊類(lèi)型的變量,其內(nèi)存分配方式與普通變量有所不同。靜態(tài)變量可以分為兩種:靜態(tài)全局變量和靜態(tài)局部變量。
靜態(tài)全局變量:靜態(tài)全局變量在程序的整個(gè)運(yùn)行周期內(nèi)都存在,其內(nèi)存分配在程序啟動(dòng)時(shí)就已經(jīng)完成,并且在程序結(jié)束時(shí)才會(huì)被釋放。靜態(tài)全局變量存儲(chǔ)在全局?jǐn)?shù)據(jù)區(qū)中,其作用域?yàn)檎麄€(gè)源文件。
靜態(tài)局部變量:靜態(tài)局部變量在函數(shù)首次被調(diào)用時(shí)分配內(nèi)存空間,但在程序的整個(gè)運(yùn)行周期內(nèi)都存在。與普通局部變量不同,靜態(tài)局部變量的內(nèi)存空間在函數(shù)執(zhí)行完畢后不會(huì)被釋放,而是保留其數(shù)值。靜態(tài)局部變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)中,其作用域?yàn)榘撟兞康暮瘮?shù)。
總的來(lái)說(shuō),靜態(tài)變量的內(nèi)存分配是在程序啟動(dòng)時(shí)進(jìn)行的,并且在整個(gè)程序運(yùn)行周期內(nèi)都存在。靜態(tài)變量在內(nèi)存中的位置取決于其類(lèi)型(全局變量還是局部變量)以及存儲(chǔ)區(qū)域(全局?jǐn)?shù)據(jù)區(qū)還是靜態(tài)存儲(chǔ)區(qū))。