位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 內(nèi)存編址

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-01

計(jì)算機(jī)中的內(nèi)存是由一個(gè)個(gè)的存儲(chǔ)單元構(gòu)成的,為了管理這些存儲(chǔ)單元,對(duì)每個(gè)存儲(chǔ)單元進(jìn)行編號(hào),這就是內(nèi)存的編址。內(nèi)存編址是按字節(jié)進(jìn)行的,每個(gè)字節(jié)對(duì)應(yīng)一個(gè)地址編號(hào)。當(dāng)程序運(yùn)行時(shí),系統(tǒng)中會(huì)有一個(gè)內(nèi)存分配表,每遇到一次變量聲明語(yǔ)句(int、double……)或函數(shù)調(diào)用語(yǔ)句(函數(shù)中的形參),系統(tǒng)會(huì)根據(jù)變量的大小在內(nèi)存中尋找合適的空間分配,并且在內(nèi)存分配表中增加一行記錄,記載變量與內(nèi)存地址的對(duì)應(yīng)關(guān)系。例如,有如下程序:

main()

{

    int a;

    char ch;

    double x;

    …

}

則該程序在內(nèi)存中的內(nèi)存分配表的近似形式如表所示。

ID

Name

Address

Length

1

a

2000

4B

2

ch

2800

1B

3

2300

8B

    例如,某賓館有30個(gè)房間,每個(gè)房間都有自己的編號(hào)101、102、103……當(dāng)有旅客需要住宿,服務(wù)臺(tái)工作人員會(huì)查詢賓館的客房情況,并將合適的空房分配給旅客住宿。同時(shí)也將旅客住宿信息(身份證號(hào)、姓名、房間號(hào)等)登記下來(lái)。

    一個(gè)變量根據(jù)其類型不同在內(nèi)存中所占的字節(jié)數(shù)也不同,例如char占1個(gè)字節(jié)、short占2個(gè)字節(jié)……變量在內(nèi)存中的首字

節(jié)單元的地址稱為該變置的地址。例如表11-1中,變量a在內(nèi)存中的地址為2000,它在內(nèi)存中占據(jù)2000~2003地址段,如圖所示。若要訪問(wèn)變量a,只需到內(nèi)存空間2000開(kāi)始的位置去訪問(wèn)就可以了。

    可以看出i內(nèi)存地址就是要訪問(wèn)變置的標(biāo)識(shí),所以將地址稱為指針,也就是說(shuō),指針就是地址。

    變量的地址和變置的值是兩個(gè)不同的概念。例如,張三去某賓館住宿,他住在了301房間。那么可以認(rèn)為301是變置的地址,而張三住在此房間中,張三就是此刻變量的值。變置的地址一旦被分配,在它作用域內(nèi)其地址是不會(huì)改變的,而變量中的值是可以改變的。如301房間今天住的是張三這個(gè)人,而明天可能住的是李四。


繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部