0

次の方法で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'

私はここで何が間違っているのですか?

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]));

説明:ここでは、「フラット化された」2D配列を割り当てています。ここでは、実際の2D配列ではなく、独自の1Dインデックスを計算します。また、mallocに渡されたサイズが正しくありませんでした。

正当な理由がない限り、C++プログラムでmallocを使用するべきではないことに注意してください。

于 2012-10-08T22:13:20.190 に答える
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;
于 2012-10-08T22:14:26.253 に答える