0

我通过以下方式创建了一个二维数组:

int** map_array = (int**)malloc(sizeof(yy_value*xx_value));

当我尝试为某个位置分配一个值时:

map_array[y*xx_value+x] = 5;

我收到以下错误:

Assigning to 'int *' from incompatible type 'int'

我在这里做错了什么?

4

2 回答 2

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。

于 2012-10-08T22:13:20.190 回答
1

您也可以将二维数组用作:

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;
于 2012-10-08T22:14:26.253 回答