作者ysbh (烏龜回娘家)
看板Grad-ProbAsk
標題Re: [問題] 記憶體配置的問題
時間Tue May 5 14:31:37 2009
※ 引述《ysbh (烏龜回娘家)》之銘言:
: 當機器記憶體儲存是以row major表示,而sizeof(int)=4,如果我們宣告一個陣列int
: a[4][2][3],並配予記憶體空間後,已知&a=0x0012FE7C,求a[2][2][2]的位址為?
: (A)0x0012FEAC (B)0x0012FECC (C)0x0012FEC8 (D)0x0012FEC4
: 算不出答案~請幫忙一下,感謝
因為這一題讓我產生了疑惑~
(A)021.考慮一個三維陣列A(1..3,1..4,1..6),並以列為主(row major)的方式存放於記
憶體中。假設每一個資料元素佔一個記憶體位址,若A(1,2,4)存放在第127個記憶體位址
,則A(2,1,2)存放第幾個記憶體位址?(A)143 (B)145 (C)147 (D)149
A(1..3,1..4,1..6)--> u1=3-1+1=3 ; u2=4-1+1=4 ; u3=6-1+1 =6
又 A(1,2,4) --> A(1,1,1) = 127
所以 A(2,1,2) --> A(2,0,-1)= A(1,1,1) + 1x4x6 - 1x6 -2
= 127 + 24 -6 -2
= 143
所以得到的答案是A
但是計算上面那一題卻出現了問題~
原因在於 u1,u2,u3這個陣列的範圍
若按您的作法~的確可以得到正確答案
但是這樣的作法似乎把陣列的範圍給弄錯了~
所以很困惑~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.71.68.193
推 uminchu185:矩陣宣告的方式不一樣吧 05/05 16:26
→ ysbh:上面那一題的範圍不是從 a[0][0][0] ~ a[4][2][3]嗎? 05/05 17:10
→ uminchu185:應該不是,宣告矩陣A[10],元素在memory中是從A[0]~A[9] 05/05 17:32
→ uminchu185:共10個 05/05 17:34
→ ysbh:原來如此~了解了~這就是C和VB最大的差異....汗‧‧ 05/05 18:50