作者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
1F:推 uminchu185:矩阵宣告的方式不一样吧 05/05 16:26
2F:→ ysbh:上面那一题的范围不是从 a[0][0][0] ~ a[4][2][3]吗? 05/05 17:10
3F:→ uminchu185:应该不是,宣告矩阵A[10],元素在memory中是从A[0]~A[9] 05/05 17:32
4F:→ uminchu185:共10个 05/05 17:34
5F:→ ysbh:原来如此~了解了~这就是C和VB最大的差异....汗‧‧ 05/05 18:50