![]() |
C語言有關陣列指標常數的記憶體配置問題
我正在閱讀「C語言教學手冊」。其中在「指標10-33」這頁下方有個圖解,我有點搞糊塗了。
如圖: http://i1371.photobucket.com/albums/...pss4xoqb6a.jpg 在a[5]陣列中,a是陣列名稱也是指標常數,書上說它本身的「值」就是它自己的位址, 所以如果要求a,&a以及&a[0]的%p,三者是都一樣的,這點可以理解。 但如果從書上畫的配置的記憶體來看,a本身的那塊記憶體不就是a[0]嗎?而a[0]裡面放的值不是整數32嗎?那它的位址要存在哪裡呢? 請教一下先進。:bow |
a本身的那塊記憶體就是a[0],存的数字就是32
这个位址是要有的,占用4-8个字节,在32位机器上占用4字节,在64位机器上占用8字节,来存放这个位址。 比如double b[10000],每个元素占用8字节,10000个元素就是80000字节。 但是位址只保存1个(b[0]的)位址即可,其余的自动推算。 |
謝謝,你的意思是說,在a[0]這塊記憶體中除了有存數字32之外,還另存了自己的位址的值例如書上說的0022FF38?
還是「另有」一塊記憶體來存放0022FF38? thanks. |
另有一块记忆体存放0022ff38
|
可是按照書上說的,a的%p和&a的%p是一樣的?也就是說,用%p來求a的內容和用%p來求a的位址,二者其實是一樣的?
|
所有時間均為 +8。現在的時間是 03:04 PM。 |
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2025,Jelsoft Enterprises Ltd.