Re: [問題] 記憶體配置的問題

看板Grad-ProbAsk作者 (烏龜回娘家)時間16年前 (2009/05/05 14:31), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

05/05 16:26, , 1F
矩陣宣告的方式不一樣吧
05/05 16:26, 1F

05/05 17:10, , 2F
上面那一題的範圍不是從 a[0][0][0] ~ a[4][2][3]嗎?
05/05 17:10, 2F

05/05 17:32, , 3F
應該不是,宣告矩陣A[10],元素在memory中是從A[0]~A[9]
05/05 17:32, 3F

05/05 17:34, , 4F
共10個
05/05 17:34, 4F

05/05 18:50, , 5F
原來如此~了解了~這就是C和VB最大的差異....汗‧‧
05/05 18:50, 5F
文章代碼(AID): #19_zrAPS (Grad-ProbAsk)
討論串 (同標題文章)
文章代碼(AID): #19_zrAPS (Grad-ProbAsk)