推断二维数组的存储地址 | Infer the storage address of a two-dimensional array
求二维数组存储地址
题目描述
二维数组A按行优先方式存储,每个元素占用1个存储单元。若元素A[0][0]的存储地址是100,A[3][3]的存储地址是220,则元素A[5][5]的存储地址是多少?
思路
- 先求出二维数组的行长。
- 再由行长求数组A[5][5]的地址。
解决方法
题外话
在连续的序号为1至100中(i<j),求序号为i(包含i)和序号为j(包含j)之间有多少个数?很简单,应该有的个数为:
特例
可以取特例,选取求序号为4和序号为8之间的数,很容易知道它们包含5个数,这符合上述公式。
实现步骤
首先由题目“元素A[0][0]的存储地址是100,A[3][3]的存储地址是220”求出行长,这和题外话所求的内容是同样的道理。
-
因为是二维数组,故设行长为x,有:
其中3x表示A[0][0]和A[2][x-1]之间的个数(A[0][0]和A[2][x-1]都包括),4为A[3][0]~A[3][3]的个数,两者相加为总个数。解得x=39
-
再通过A[3][3]存储地址求元素A[5][5]的存储地址:
或:
![](/img/donate.jpg)
感谢您的支持 | Thank you for supporting
推断二维数组的存储地址 | Infer the storage address of a two-dimensional array
http://example.com/2024/05/26/array/