我已经按照以下方式创建了一个2D数组:
int** map_array = (int**)malloc(sizeof(yy_value*xx_value));
当我尝试在某个位置分配值时:
map_array[y*xx_value+x] = 5;
我收到以下错误:
Assigning to 'int *' from incompatible type 'int'
我在这里做错了什么?
答案 0 :(得分:4)
变化:
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。
答案 1 :(得分:1)
您也可以使用2D数组:
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;