二維數組轉換為一維:a[m][n] = a[m*k+n],k 表示行的長度
int 型二維數組,a[4][4]的位址為 0xf8b82140,a[9][9]的位址為 0xf8b8221c,然後讓我們計算 a[7][7] 的位址。簡單的條件下蘊含着豐富的資訊。我們可推得二維數組列的長度,以及然後是任意位置的位址。
a[4][4] ==> (4x+4)*4
// x: 表示行的長度,乘子 4:表示 int 在記憶體中所占的位元組數
a[9][9] ==> (9x+9)*4
(5x+5)*4 = DC => x = 10
a[7][7] = (7x+7)*4
(7x+7)*4-(4x+4)*4 = (3x+3)*4 = 132 = 84(十六進制)
也即 a[7][7] 的位址為 a[4][4] + 84 = 0xf8b821c4
我們還可泛化這一結論,給出二維數組任意兩個位置(位于不同的行)的位址,我們可獲悉行的長度以及任意合法位置的位址。