C語言教學(xué)內(nèi)存綜述
時間:2022-04-15 08:56:00
導(dǎo)語:C語言教學(xué)內(nèi)存綜述一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
1.C語言教學(xué)中內(nèi)存分析的必要性在C語言程序設(shè)計教學(xué)中,不管是變量或不同類型的表達(dá)式,都會和內(nèi)存發(fā)生關(guān)系,那么內(nèi)存單元中數(shù)據(jù)的值和類型就要和變量、表達(dá)式一一對應(yīng)起來,其中確定變量、表達(dá)式的值就一定要和內(nèi)存聯(lián)系起來,這樣在程序分析過程中內(nèi)存的分析就變得尤為重要,它始終貫穿整個C語言程序設(shè)計教學(xué)的始終,并且要給學(xué)生貫穿這種思想,讓學(xué)生在分析程序時會進(jìn)行內(nèi)存分析,進(jìn)而確定程序的運(yùn)行結(jié)果.
2.明確變量和內(nèi)存的關(guān)系在C語言中,變量和內(nèi)存的關(guān)系是讓部分老師和學(xué)生迷惑,其中主要涉及變量什么時候占用內(nèi)存、什么時候釋放內(nèi)存和釋放以后內(nèi)存中的數(shù)據(jù)是什么.這就要搞清楚變量的定義、內(nèi)存單元的地址、內(nèi)存分配和內(nèi)存釋放的概念.變量用來標(biāo)識(identify)一塊內(nèi)存區(qū)域,這塊區(qū)域的值一般是可以更改的,這就是它“變”的由來,但是可以通過使用如const等一些修飾符號來限定這一內(nèi)存區(qū)域的操作特性(characteristic),即變量的操作特性.用const修飾的使變量不能更改的和常量一樣的變量叫做常變量.所謂變量名就是一個標(biāo)識符(identifier),用來指代一塊內(nèi)存區(qū)域,即變量,使用變量使我們操作內(nèi)存以區(qū)域(area)、塊(block)為單位,提高了方便性.在機(jī)器代碼中,是不會出現(xiàn)變量名的;
變量名是給程序員操作內(nèi)存來使用的.內(nèi)存分配就是在程序編譯或運(yùn)行時期用一個變量來標(biāo)識一個存儲單元,而且存儲單元的長度和變量的類型要統(tǒng)一,這就意味著此時這塊內(nèi)存由這個變量獨(dú)占,不允許其他的變量使用,隨著變量值的變化,相應(yīng)內(nèi)存中的值也變化.內(nèi)存釋放是程序運(yùn)行結(jié)束后變量消亡,內(nèi)存的使用權(quán)釋放,以供下一次的程序使用,在下一次的程序使用之前內(nèi)存中的內(nèi)容保持最近一次變量的值.
內(nèi)存地址是在內(nèi)存中用來表示每一塊存儲單元的表示,由操作系統(tǒng)來對內(nèi)存統(tǒng)一編址,對程序員是透明的.由此可知,一個變量對應(yīng)一塊內(nèi)存區(qū)域,但內(nèi)存中的每一塊存儲單元都有唯一的地址來標(biāo)識,變量根據(jù)程序的需要可以定義,但內(nèi)存地址是必須存在的.變量和地址是內(nèi)存的兩種表示手段,只是變量在生存期和地址表示同一存儲單元,當(dāng)變量釋放以后,只有地址來表示存儲單元.
3.內(nèi)存的分區(qū)和以及各分區(qū)的分配C語言中根據(jù)數(shù)據(jù)在內(nèi)存中存在時間(即生存期)的不同,將供用戶使用的內(nèi)存空間分為程序區(qū)、靜態(tài)存儲區(qū)和動態(tài)存儲區(qū)三個區(qū)域,其中動態(tài)存儲區(qū)又分為堆區(qū)和棧區(qū),其結(jié)構(gòu)如下圖表示:棧區(qū)的分配:在函數(shù)執(zhí)行時,函數(shù)內(nèi)部的局部變量和參數(shù)的存儲單元在程序運(yùn)行時在棧上創(chuàng)建,函數(shù)運(yùn)行結(jié)束時這些存儲單元被自動釋放.局部變量、函數(shù)參數(shù)的內(nèi)存為棧分配方式.
- 上一篇:C語言中凌波多媒體系統(tǒng)運(yùn)用
- 下一篇:高職C語言教學(xué)