我通过以下方式创建了一个二维数组:
int** map_array = (int**)malloc(sizeof(yy_value*xx_value));
当我尝试为某个位置分配一个值时:
map_array[y*xx_value+x] = 5;
我收到以下错误:
Assigning to 'int *' from incompatible type 'int'
我在这里做错了什么?
改变:
int** map_array = (int**)malloc(sizeof(yy_value*xx_value));
至:
int* map_array = (int*)malloc(yy_value*xx_value*sizeof(map_array[0]));
说明:你在这里分配一个“扁平化”的二维数组,在这里你计算你自己的一维索引,而不是一个实际的二维数组。此外,传递给 malloc 的大小也不正确。
请注意,如果没有充分的理由,您可能不应该在 C++ 程序中使用 malloc。
您也可以将二维数组用作:
int **map_array = (int**)malloc(xx_value*sizeof(int*))
for (i = 0; i < xx_value; i++) {
map_array[i] = (int*)malloc(yy_value*sizeof(int))
}
并使用以下方式访问元素:
map_array[x][y] = 5;