C語(yǔ)言教學(xué)內(nèi)存綜述

時(shí)間:2022-04-15 08:56:00

導(dǎo)語(yǔ):C語(yǔ)言教學(xué)內(nèi)存綜述一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。

C語(yǔ)言教學(xué)內(nèi)存綜述

1.C語(yǔ)言教學(xué)內(nèi)存分析的必要性在C語(yǔ)言程序設(shè)計(jì)教學(xué)中,不管是變量或不同類(lèi)型的表達(dá)式,都會(huì)和內(nèi)存發(fā)生關(guān)系,那么內(nèi)存單元中數(shù)據(jù)的值和類(lèi)型就要和變量、表達(dá)式一一對(duì)應(yīng)起來(lái),其中確定變量、表達(dá)式的值就一定要和內(nèi)存聯(lián)系起來(lái),這樣在程序分析過(guò)程中內(nèi)存的分析就變得尤為重要,它始終貫穿整個(gè)C語(yǔ)言程序設(shè)計(jì)教學(xué)的始終,并且要給學(xué)生貫穿這種思想,讓學(xué)生在分析程序時(shí)會(huì)進(jìn)行內(nèi)存分析,進(jìn)而確定程序的運(yùn)行結(jié)果.

2.明確變量和內(nèi)存的關(guān)系在C語(yǔ)言中,變量和內(nèi)存的關(guān)系是讓部分老師和學(xué)生迷惑,其中主要涉及變量什么時(shí)候占用內(nèi)存、什么時(shí)候釋放內(nèi)存和釋放以后內(nèi)存中的數(shù)據(jù)是什么.這就要搞清楚變量的定義、內(nèi)存單元的地址、內(nèi)存分配和內(nèi)存釋放的概念.變量用來(lái)標(biāo)識(shí)(identify)一塊內(nèi)存區(qū)域,這塊區(qū)域的值一般是可以更改的,這就是它“變”的由來(lái),但是可以通過(guò)使用如const等一些修飾符號(hào)來(lái)限定這一內(nèi)存區(qū)域的操作特性(characteristic),即變量的操作特性.用const修飾的使變量不能更改的和常量一樣的變量叫做常變量.所謂變量名就是一個(gè)標(biāo)識(shí)符(identifier),用來(lái)指代一塊內(nèi)存區(qū)域,即變量,使用變量使我們操作內(nèi)存以區(qū)域(area)、塊(block)為單位,提高了方便性.在機(jī)器代碼中,是不會(huì)出現(xiàn)變量名的;

變量名是給程序員操作內(nèi)存來(lái)使用的.內(nèi)存分配就是在程序編譯或運(yùn)行時(shí)期用一個(gè)變量來(lái)標(biāo)識(shí)一個(gè)存儲(chǔ)單元,而且存儲(chǔ)單元的長(zhǎng)度和變量的類(lèi)型要統(tǒng)一,這就意味著此時(shí)這塊內(nèi)存由這個(gè)變量獨(dú)占,不允許其他的變量使用,隨著變量值的變化,相應(yīng)內(nèi)存中的值也變化.內(nèi)存釋放是程序運(yùn)行結(jié)束后變量消亡,內(nèi)存的使用權(quán)釋放,以供下一次的程序使用,在下一次的程序使用之前內(nèi)存中的內(nèi)容保持最近一次變量的值.

內(nèi)存地址是在內(nèi)存中用來(lái)表示每一塊存儲(chǔ)單元的表示,由操作系統(tǒng)來(lái)對(duì)內(nèi)存統(tǒng)一編址,對(duì)程序員是透明的.由此可知,一個(gè)變量對(duì)應(yīng)一塊內(nèi)存區(qū)域,但內(nèi)存中的每一塊存儲(chǔ)單元都有唯一的地址來(lái)標(biāo)識(shí),變量根據(jù)程序的需要可以定義,但內(nèi)存地址是必須存在的.變量和地址是內(nèi)存的兩種表示手段,只是變量在生存期和地址表示同一存儲(chǔ)單元,當(dāng)變量釋放以后,只有地址來(lái)表示存儲(chǔ)單元.

3.內(nèi)存的分區(qū)和以及各分區(qū)的分配C語(yǔ)言中根據(jù)數(shù)據(jù)在內(nèi)存中存在時(shí)間(即生存期)的不同,將供用戶(hù)使用的內(nèi)存空間分為程序區(qū)、靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū)三個(gè)區(qū)域,其中動(dòng)態(tài)存儲(chǔ)區(qū)又分為堆區(qū)和棧區(qū),其結(jié)構(gòu)如下圖表示:棧區(qū)的分配:在函數(shù)執(zhí)行時(shí),函數(shù)內(nèi)部的局部變量和參數(shù)的存儲(chǔ)單元在程序運(yùn)行時(shí)在棧上創(chuàng)建,函數(shù)運(yùn)行結(jié)束時(shí)這些存儲(chǔ)單元被自動(dòng)釋放.局部變量、函數(shù)參數(shù)的內(nèi)存為棧分配方式.