【发布时间】:2019-12-02 03:30:28
【问题描述】:
假设我有这个动态分配的二维数组:
//Example of a 3 row * 2 columns int array
int (*arr)[2] = malloc(sizeof(int[3][2]));
但是,我发现如果我这样做:
arr[0][5] = 1;
编译器没有抱怨,至少用 valgrind 进行测试,它也没有抱怨。除非我尝试访问超过分配空间大小的空间。
我发现自动数组也是如此:
int arr[3][2];
arr[0][5] = 1; //Code works without errors
我现在的问题是:如果编译器无论如何都会接受arr[0][5] = 1;,那么声明:int arr[3][2]; 有什么意义?
我正在使用 GCC 编译器
【问题讨论】:
-
多维数组语法带来的问题多于解决的问题。
标签: c arrays multidimensional-array