为什么编译器只关注二维数组的第二个维度?我无法理解这一点。谢谢。
因为编译器需要确定如何从内存中访问数据。第一维并不重要,因为当所有其他大小都已给定时,编译器可以计算出项数。
例如:
int a1[] = { 1, 2, 3, 4 }
int a2[][] = { 1, 2, 3, 4, 5, 6} }
这里的“第二个维度”并不是指只有两个维度的情况,而是指除了第一个维度以外的所有维度。因此,例如可以使用int a[][2][3][4]
这样的声明。如果没有这些维度,就无法计算元素的地址。
a[i][j]
的内存位置。a[0][0]
a[0][1]
a[0][2]
... a[0][M]
a[1][0]
...
顺便提一下:FORTRAN 数组的布局不同:a[1][1]
a[2][1]
a[3][1]
... a[N][1]
a[1][2]
...