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

C語言 內存編址

提問人:劉團圓發(fā)布時間:2020-12-01

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

main()

{

    int a;

    char ch;

    double x;

    …

}

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

ID

Name

Address

Length

1

a

2000

4B

2

ch

2800

1B

3

2300

8B

    例如,某賓館有30個房間,每個房間都有自己的編號101、102、103……當有旅客需要住宿,服務臺工作人員會查詢賓館的客房情況,并將合適的空房分配給旅客住宿。同時也將旅客住宿信息(身份證號、姓名、房間號等)登記下來。

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

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

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

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


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

相關視頻回答
回復(0)
返回頂部