#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;
}
在函数中,没有映射a [i] [k]和map [i] [k]。数组A的值很奇怪,例如99882978。为什么不起作用?
我被制成了游戏树,就像go一样,每个树节点都有父母地图的副本。因此,我制作了功能malloc两个Dimesional阵列,副本的映射和复制映射的返回指针。但是它不起作用...我很困在这里...
child_map
是指针的数组。声明int map[][7]
用于int
的二维数组,而不是一系列指针。您需要将asd
更改为:
int **asd(int **map)