位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

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

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

計(jì)算機(jī)中的內(nèi)存是由一個(gè)個(gè)的存儲(chǔ)單元構(gòu)成的,為了管理這些存儲(chǔ)單元,對每個(gè)存儲(chǔ)單元進(jìn)行編號,這就是內(nèi)存的編址。內(nèi)存編址是按字節(jié)進(jìn)行的,每個(gè)字節(jié)對應(yīng)一個(gè)地址編號。當(dāng)程序運(yùn)行時(shí),系統(tǒng)中會(huì)有一個(gè)內(nèi)存分配表,每遇到一次變量聲明語句(int、double……)或函數(shù)調(diào)用語句(函數(shù)中的形參),系統(tǒng)會(huì)根據(jù)變量的大小在內(nèi)存中尋找合適的空間分配,并且在內(nèi)存分配表中增加一行記錄,記載變量與內(nèi)存地址的對應(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è)房間都有自己的編號101、102、103……當(dāng)有旅客需要住宿,服務(wù)臺工作人員會(huì)查詢賓館的客房情況,并將合適的空房分配給旅客住宿。同時(shí)也將旅客住宿信息(身份證號、姓名、房間號等)登記下來。

    一個(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地址段,如圖所示。若要訪問變量a,只需到內(nèi)存空間2000開始的位置去訪問就可以了。

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

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


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

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