数组一般在栈中申请空间,而栈是从高地址向低地址生长的一种结构。数组的访问方式
arr[i] = 数组首地址+地址偏移量,即
arr[i] = 数组名 + 数组元素序号×数组元素字节数
而数组在栈中的存储方式如下图所示
在图中,我们可以看到数组的地址是连续的,如arr[3][3]数组的arr[0][0]一直到arr[2][2],地址都是紧挨着的,那么我们是否可以假设用一位数组的方式去访问二维数组是否可行呢?
如图,将二维数组arr[3][3]拼接成一维数组arr[9],则访问arr[1][1]时,可写作arr[0][4];
即arr[0][行×列+列下标]
arr[1][2] = arr[0][1*3+2] arr[2][2] = arr[0][2*3+2] ……