我从之前的博士入学考试中遇到了多项选择题,如下:
如果A [4] [5]的地址在内存中为1000,并且方法是行主要的,则在上三角A [1..6,1 ...上的A [2] [3]的地址是什么。 6]?每个项目有2个字节。
我的解决方案是:
A[4][5]= x + [ (4-1)*6 + (5-1)] * 2 = 1000 ---> x= 1000-40=960. so
A[2][3] = 960 + [ (2-1)*6 + (3-1)] * 2 = 976 !!
但我的解决方案不在答题纸的选项中。哪里错了?谁能说出来?
A)1016
B)982
C)984
D)1018
答案 0 :(得分:1)
你不需要起始地址来解决这个问题,所以不要打扰x是什么。
我们在A [4] [5]的地址1000。因此,元素的地址是:
A[4][4] : 998
A[4][3] : 996
A[4][2] : 994
使用这个简单的逻辑,我们可以找到A [2] [3]的地址。
现在从可用选项中看到,唯一正确的选项似乎是B,似乎数组的索引从1开始而不是0 ,并包含主对角线。
所以我们将返回9个位置,因此正确的选项是B。
<强>解释强>
因为包含了主对角线,所以我们在第4行返回1个位置。在第3行返回4个位置,在第2行返回4个位置。因此,返回的总位置是9,因为每个元素需要2个字节,所以正确的答案是 1000 - 9 * 2 = 982