#include <stdio.h>
#include <stdlib.h>
int** asd(int map[][7]);
int main(void)
{
int **child_map = (int**)malloc(sizeof(int*) * 6);
int i, k;
for (i = 0; i < 6; i++)
child_map[i] = (int*)malloc(sizeof(int) * 7);
for (i = 0; i < 6; i++)
{
for (k = 0; k < 7; k++)
{
child_map[i][k] = 10;
}
}
for (i = 0; i < 6; i++)
{
for (k = 0; k < 7; k++)
{
printf("%3d", child_map[i][k]);
}
printf("\n");
}
int **map = NULL;
map = asd(child_map);
for (i = 0; i < 6; i++)
{
for (k = 0; k < 7; k++)
{
printf("%3d", map[i][k]);
}
printf("\n");
}
return 0;
}
int** asd(int map[][7])
{
int **a = (int**)malloc(sizeof(int*) * 6);
int i, k;
for (i = 0; i < 6; i++)
a[i] = (int*)malloc(sizeof(int) * 7);
for (i = 0; i < 6; i++)
{
for (k = 0; k < 7; k++)
{
a[i][k] = map[i][k];
}
}
return a;
}
関数では、[i] [k]とmap [i] [k]はマップされません。配列aの値は99882978のように非常に奇妙です。なぜ機能しないのですか?
私はgoのようなゲームのツリーになっており、各ツリーノードには親のマップのコピーがあります。だから、関数mallocを2次元配列にし、コピーマップの親と戻りポインタのマップをコピーします。しかし、それは動作しません... 私は非常にここにこだわっています...C:関数では、mallocの2次元配列と引数の重複配列が機能しません。
[malloc関数をキャストしていない]何をすべきか(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – Barmar
もしかして?私は理解していません –
'malloc'の前に' int ** child_map = malloc(sizeof(int *)* 6); ''(int **) 'を付けないでください。理由を知るにはリンクをクリックしてください。 – Barmar