多维数组的存储
数组
数组是相同类型数据元素的有序集合,各元素在内存中按下标线性排列。多维数组在内存中按行优先或列优先方式展开成一维存储。
一维数组
一维数组 的起始地址为 ,每个元素占 L 个存储单元,则:
二维数组(行优先)
设二维数组 (m 行 n 列),行优先存储时,元素 的地址为:
推导:行优先时,第 i 行之前共有 个元素,第 i 行第 j 列之前还有 j 个元素,故偏移量为 。
二维数组(列优先)
列优先存储时,元素 的地址为:
推导:第 j 列之前共有 个元素,第 j 列第 i 行之前还有 i 个元素,故偏移量为 。
行优先和列优先的地址计算公式极易混淆。关键记住:行优先先数”行”,列优先先数”列”。408 考题常给出行优先公式,要求换算出某元素的地址,务必看清题意。
习题
习题 1
二维数组 A[0..4][0..5] 按行优先存储,每个元素占 2 个存储单元,A[0][0] 的地址为 1000,则 A[3][4] 的地址是( )
A. 1034 B. 1040 C. 1044 D. 1048
答案与解析
答案:C
解析:A 是 5 行 6 列(0..4 × 0..5),行优先时元素 的偏移量为 。代入 i=3, j=4, n=6:偏移 。地址 = 1000 + 22 × 2 = 1044。
习题 2
多维数组在内存中的存储方式是什么?如何计算元素地址?
答案与解析
多维数组按行优先或列优先线性展开存储。行优先时 ;列优先时 。其中 m、n 分别为行数、列数,L 为元素大小。
