C:在功能中,malloc二维数组和重复的参数阵列不起作用


#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)

最新更新