0

我在我的 maze.c 文件中填充了这个数组:

char normalMazeArray[6][12]; 动态填充为 mazeArray[row][column]

现在我想将数组传递给位于我的结构(maze.h)中的 mazeArray

我的结构被称为:

typedef struct {
    char mazeArray;
} maze_t;

我尝试将其复制如下:

maze_t* maze;

char normalMazeArray[6][12]; // filled with info

typedef struct {
    char mazeArray;
} maze_t;

maze->mazeArray = normalMazeArray;

但是它不起作用,有人可以帮助我吗?

4

2 回答 2

1

你想要做的事情并不完全可能。不过,您可以使用两种略有不同的解决方案。

normalMazeArray是类型char [6][12]- 它是一个数组。您可以使用以下命令将其内容复制到相同类型的数组中memcpy()

typedef struct {
    char mazeArray[6][12];
} maze_t;

memcpy(maze->mazeArray, normalMazeArray, sizeof(normalMazeArray));

或者如果您normalMazeArray在程序的整个生命周期中都存在,您可以在结构中分配一个指向它的指针:

typedef struct {
    char (*mazeArray)[12];
} maze_t;

maze->mazeArray = normalMazeArray;
于 2013-02-22T18:22:59.467 回答
-1

等等,怎么样??

首先,maze是一个指针,所以你不能有maze.mazeArray. 其次,maze->mazeArray是 char 类型,而是 charmazeArray类型char**。没办法。

您应该编写一个分配char**数组的函数,然后从mazeArray. 或者,如果您想要转让所有权,而不仅仅是复制,您可以这样:

typedef struct {
   char** mazeArray;
} maze_t;
maze_t maze;
maze.mazeArray = mazeArray;
于 2013-02-22T18:15:07.400 回答