【发布时间】:2018-10-22 08:41:27
【问题描述】:
对于 C 编译器,数组元素是按列优先顺序还是行优先顺序存储的,还是依赖于编译器?
int arr[2][3]={1,2,3,4,5,6};
int array[3][2]={1,2,3,4,5,6};
关于打印 arr 和数组输出: arr:
1 2 3
4 5 6
数组:
1 2
3 4
5 6
它似乎总是更喜欢行主要顺序?
【问题讨论】:
-
您没有太注意
-Wmissing-braces警告,是吗? -
我在看书,给的----->和其他变量的情况一样,声明一个二维数组只为数组在内存中预留空间。没有值存储在其中。二维数组的初始化方式与一维数组的初始化方式相同。例如,int 标记[2][3]={90, 87, 78, 68, 62, 71};请注意,二维数组的初始化是逐行完成的。上面的语句也可以写成:int Marks[2][3]={{90,87,78},{68,62,71}};
-
这也是在没有任何警告的情况下运行的。
-
在 gcc/clang 上,你应该至少使用
-Wall -Wextra(你也应该使用-pedantic),在 VS (cl.exe) 上你应该使用/W3。如果这样做,您将收到警告。arr的声明应该有int arr[2][3] = {{1,2,3},{4,5,6}};在没有警告的情况下编译之前不要接受代码。
标签: c arrays multidimensional-array memory-layout