为什么只有第二个数组维度很重要?

The*_* do 7 c++ arrays

为什么在处理二维数组时,第二维对编译器很重要?只是无法理解这一点.谢谢

Mil*_*kov 6

因为编译器需要弄清楚如何从内存中访问数据.第一个维度并不重要,因为编译器可以在给出所有其他大小时计算项目数.

例子:

int a1[] = { 1, 2, 3, 4 }
Run Code Online (Sandbox Code Playgroud)

编译器知道为4个整数分配空间.现在,有了这个:

int a2[][] = { 1, 2, 3, 4, 5, 6} }
Run Code Online (Sandbox Code Playgroud)

编译器无法决定它应该是a2 [1] [6]还是a2 [2] [3]或a2 [3] [2]或a2 [6] [1].一旦你告诉它第二个维度,它就可以计算出第一个维度.

例如,尝试访问元素a2 [1] [0]将根据声明产生不同的值.您可能会获得2,3,4或甚至无效的位置.