c語言靜態(tài)成員存儲在哪 static修飾的變量放在內(nèi)存哪里的?
static修飾的變量放在內(nèi)存哪里的?static修飾的靜態(tài)變量儲存時在內(nèi)存的數(shù)據(jù)區(qū);也就是靜態(tài)變量能保存在——數(shù)據(jù)區(qū)。棧中保存到都差不多數(shù)據(jù)類型的變量和自定義設(shè)置的對象的摘錄(又不是對象),對象本身
static修飾的變量放在內(nèi)存哪里的?
static修飾的靜態(tài)變量儲存時在內(nèi)存的數(shù)據(jù)區(qū);也就是靜態(tài)變量能保存在——數(shù)據(jù)區(qū)。
棧中保存到都差不多數(shù)據(jù)類型的變量和自定義設(shè)置的對象的摘錄(又不是對象),對象本身都能保存在堆區(qū)中,被先執(zhí)行的方法的也pull到棧中,當(dāng)方法負(fù)責(zé)執(zhí)行完后再cancel出棧。
c語言存儲形式怎么看?
C語言動態(tài)存儲與支持靜態(tài)存儲
支持靜態(tài)存儲是指在程序運(yùn)行期間由系統(tǒng)分配單獨(dú)計算的存儲空間的;動態(tài)存儲是在程序運(yùn)行期間依據(jù)是需要通過相冊的分配存儲空間的。
內(nèi)存中的供用戶可以使用的存儲空間這個可以可分3部分,
程序區(qū)
動態(tài)和靜態(tài)存儲區(qū)
動態(tài)存儲區(qū)
全局變量徹底能保存在動態(tài)和靜態(tài)存儲區(qū)中,在程序開始執(zhí)行時給全局變量分配存儲區(qū),程序執(zhí)行完畢就施放。
在動態(tài)存儲區(qū)儲存時以上數(shù)據(jù)
函數(shù)形式參數(shù)。
函數(shù)中定義的沒有用關(guān)鍵字static聲明的變量,即自動啟動變量。
函數(shù)調(diào)用時的現(xiàn)場保護(hù)和直接返回地址等。
在C語言中,每一個變量和函數(shù)都是兩個屬性:
數(shù)據(jù)類型
數(shù)據(jù)的存儲類別。
C語言的存儲類別包括4種:
自動啟動的(auto)
靜態(tài)的(static)
寄存器的(register)
外部的(extern)。
C語言局部變量的存儲類別
不自動變量(auto變量)
函數(shù)中的局部變量,如果不專門買聲明聲明static存儲類別,大都代碼地分配存儲空間的,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中。自動變量用關(guān)鍵字auto做存儲類別聲明。
支持靜態(tài)局部變量(static局部變量)
函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而繼續(xù)剩余原值,即其占用的存儲單元不能量,在下一次再動態(tài)創(chuàng)建該函數(shù)時,該變量已有值。
寄存器變量(register變量)
為提高執(zhí)行效率,愿意將局部變量的值放在CPU中的寄存器中,是需要1小時10分真接從寄存器收起參加除法運(yùn)算,用不著再到內(nèi)存中去存取。而對寄存器的存取速度遠(yuǎn)低于對內(nèi)存的存取速度,并且這樣的做可以提高執(zhí)行效率,這種變量叫寄存器變量,用關(guān)鍵字register作聲明。
C語言全局變量的存儲類別
在一個文件內(nèi)存儲外部變量的作用域
要是因此某種判斷,在定義點(diǎn)之前的函數(shù)需要引用該外部變量,則估計在直接引用之前用關(guān)鍵字extern對該變量作“外部變量聲明”,來表示把該外部變量的作用域擴(kuò)充卡至此位置。
將外部變量的作用域擴(kuò)充卡到其他文件。
將外部變量的作用域限制下載在本文件中。
注意,用auto、register和static聲明變量時,是在定義法變量的基礎(chǔ)上算上這些關(guān)鍵字,而不能另外在用。