6.3.3 二维数组在形式上很像一个矩阵或者一个二维的表格,例如:
int a[2][3];
可以把二维数组a的所有元素放在一个二维表中:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
二维数组在定义后,同样系统会为它申请内存。如果是一个m*n的二维数组,需要申请m*n的内存单元,每个内存单元所需的字节数取决于二维数组的类型。例如上述的二维数组a,因为int型变量占用2个字节(Turbo C环境),那么a数组需要2*3*2=12个字节的内存。
C语言规定:二维数组元素在内存中顺序排放,排列顺序是按行存放。即先顺序存放第一行的数组元素,然后存放第二行的数组元素,依此类推。
上述的二维数组a在内存中映像为(假设系统为a分配内存的首地址为2C80):
C语言中还可以使用超过2维的多维数组。例如可以定义一个三维的数组:
int a[2][3][4];
多维数组元素在内存中的排列规则是:最左面的下标变化的最慢,最右面的下标变化的最快。上述三维数组a的数组元素排列顺序是:
a[0][0][0]=>a[0][0][1]=> a[0][0][2]=> a[0][0][3]=>
a[0][1][0]=> a[0][1][1]=> a[0][1][2]=> a[0][1][3]=>
a[0][2][0]=> a[0][2][1]=> a[0][2][2]=> a[0][2][3]=>
a[1][0][0]=>a[1][0][1]=> a[1][0][2]=> a[1][0][3]=>
a[1][1][0]=> a[1][1][1]=> a[1][1][2]=> a[1][1][3]=>
a[1][2][0]=> a[1][2][1]=> a[1][2][2]=> a[1][2][3]
转自:http://www.neu.edu.cn/cxsj/online/c6/ch6_3-3.html
来源:https://www.cnblogs.com/processakai/archive/2012/04/04/2431743.html