首页 > 试题广场 >

设二维数组A[m][n],每个数组元素占用k个字节,第一个数

[单选题]
设二维数组A[m][n],每个数组元素占用k个字节,第一个数组元素的存储地址是Loc(a[0][0]),求按行优先顺序存放的数组元素a[i][j](0 ≤i≤m-1,0≤j≤n-1 )的存储地址为


  • Loc(a[0][0])+((i-1)*n-1)*k
  • Loc(a[0][0])+(i*n+j)*k
  • Loc(a[0][0])+(j*m+i)*k
  • Loc(a[0][0])+((j-1)*m+i-1)*k
由于下标从0开始,先计算偏移量,i*n+j,再乘以字节既是(i*n+j)*k,最后加上第一个数组元素的地址,所以是(i*n+j)*k+Loc(a[0][0]),选B。
这里要注意的是下标是从0开始的还是从1开始的,从1开始时,i,j都需要-1,从0开始时,不用减。
发表于 2017-09-14 14:50:23 回复(0)
按照行优先存储,(行号*每行个数(n)+列号)*k
发表于 2017-06-04 21:34:33 回复(3)
下标是从0开始,所以不需要减一,A选项错在减一,也错在没加上j。(如果是从1开始的,i,j都需要-1)
发表于 2022-01-19 15:22:33 回复(0)
(行号*每行个数n+列号)*k
发表于 2022-07-29 08:01:04 回复(0)
特殊值法 简记:行优先,地址公式里行号要做乘法,乘数组中列的个数n
发表于 2022-02-28 00:44:04 回复(0)
注意看题是以行优先
发表于 2017-12-25 19:00:20 回复(0)
题设二维数组有m行n列,由于下标从0开始,a[i][j]实际上位于i+1行、n+1列,按行存储,a[i][j]是第ni+j+1个元素。已知第一个数组元素的地址Loc(a[0][0]),因此a[i][j]的存储地址为Loc(a[0][0])+(n*i+j+1-1)*k
发表于 2023-03-20 17:47:47 回复(0)
代入0就行
发表于 2022-10-17 13:49:23 回复(0)
没读懂啥意思
发表于 2022-05-02 18:01:41 回复(0)