が、私はそれが/より良いので、私はC可変サイズ2次元配列が
// OLD CODE
int **map;
map = calloc(number, sizeof(int *));
if (!(map)) {
free(map);
return 1;
}
for (int i = 0; i < number; i++) {
map[i] = calloc(number, sizeof(int));
if (!(map[i])) {
while (--i >= 0) {
free(map[i]);
}
free(map);
return 1;
}
}
// NEW CODE
int (*map)[number] = malloc(sizeof (int[number][number]));
if (!(map)){
free(map);
return 1;
}
を次のように2-D変数配列の割り当てを変更しようとして読みやすくするために私のコードをリファクタリングしようとしている関数に渡します問題は、マップを使用するすべての関数がint **map
をとり、IDEのように地図の宣言を変更することです。incorrect type int[]* instead of int**
int**
の代わりに何を使うべきですか?関数宣言でint[]* map
を使用すると、can't resolve variable map
'タイプFUNC(int型nは、INT(*マップ)[N]);' 'FUNC(数、マップ)を呼び出す;' – BLUEPIXY
が自分に好意を行うと、ちょうどフラットな配列を作成し、次に配列を参照する[y * width + x] = value; –
@MalcolmMcLean私はそれについて考えていました。マップのサイズの半分を割り当てる方法があり、インデックスの順序について心配する必要はありませんか?私のマップ位置[i] [j]と[j] [i]は常に同じ値を持ちますが、今私はiとjの順序について心配する必要がないように、必要なサイズを2倍に割り当てます。 –