看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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