编程高手请进,一个关于数组地址的问题

我前几天在一本数据结构的书上看到了一道题,请指点一下: 一整数数组为X[3][5],且已知X[0][0],X[1][0],X[1][1]的地址分别为10,12,18,则X[2][3]的地址是: A)28 B)32 C)36 D)26 我觉的X[0][0]与X[1][0]的地址之差应该比X[1][0]与X[1][1]的地址之差大吧。请指点这道题的答案是什么?

按照“已知X[0][0],X[1][0],X[1][1]的地址分别为10,12,18”可知数组元素在内存中的排列方式如下:
X[0,0],10
X[1,0],12
X[2,0],14
X[0,1],16
X[1,1],18
X[2,1],20
X[0,2],22
X[1,2],24
X[2,2],26
X[0,3],28
X[1,3],30
X[2,3],32

因此应该选择 B)32
按这种结构,这个数组的存储映射函数 应该是 a[i][j]=*(&a[0][0]+3*j+i)
所以 a[2][3]=*(&a[0][0]+11)
由于&a[0][0]=10,而且这是一个整型数组,每个元素的长度是2,
所以&a[2][3]=10+11*2=32
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-02
选D吧.
它这个不是建立在哪种语言的基础上的.就是不同的编译器对数组的不同处理.按这道题的说法.这种编译器对数组的处理的排列方式是:
X[0,0],10
X[1,0],12
X[2,0],14
X[0,1],16
X[1,1],18
X[2,1],20
X[0,3],22
X[1,3],24
X[2,3],26

公式就是10+(3-1)*3*2+2*2=10+12+4=26
第2个回答  2007-08-02
我觉得应该是B)32

你把它拆成3个一维数组就清楚了
x1[5],x2[5],x3[5]

10和12说明每个一维数组的首地址是这个规律的,即差2.
12和18是说明每个一维数组中的每个元素的地址是这个规律的,即差6
相似回答
大家正在搜