C語言 內存編址
計算機中的內存是由一個個的存儲單元構成的,為了管理這些存儲單元,對每個存儲單元進行編號,這就是內存的編址。內存編址是按字節(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房間今天住的是張三這個人,而明天可能住的是李四。
點擊加載更多評論>>