我在用 C 语言初始化结构中的变量矩阵时遇到问题。已经阅读了几篇文章(post),但我似乎无法修复它。不要问我为什么,但对于一个任务,我需要初始化一个位于结构中的矩阵。
我的结构代码是:
typedef struct maze{
int row;
int column;
char matrix[row][column];
}maze;
通过调用不同的函数,在读取某个文件后,我需要通过其给定的参数初始化一个矩阵,因此 2 个参数“行”和“列”。
我的 init 函数代码是:
struct maze* init_maze(int row, int column) {
struct maze mazeFilled;
struct maze *mazePointer;
mazeFilled.row = row;
mazeFilled.column = column;
return mazePointer;
}
但是你可以猜到这是行不通的,人们已经提到很难从 2 个变量中创建一个矩阵。谁能解释我做错了什么。
编辑1:
我根据帖子更改了我的代码,但结构保持不变。我需要分配指针,以便它甚至在勺子之外保持活动状态。
我的 init 函数的新代码是:
struct maze* init_maze(void) {
int row = 6;
int column = 10;
struct maze *mazePointer = malloc(sizeof (*mazePointer));
mazePointer->row = row;
mazePointer->column = column;
return mazePointer;
}
编辑2:
认为我发现了我的错误,我没有为矩阵分配内存。我的新初始化函数:
struct maze* init_maze(void) {
int row = 6;
int column = 10;
maze *mazePointer;
mazePointer = malloc(sizeof(maze));
mazePointer->row = row;
mazePointer->column = column;
mazePointer->matrix = malloc(row * sizeof(char*));
for (int i; i < row; i++) {
for(int j; j < column; j++) {
mazePointer -> matrix[i][j] = malloc(1 * sizeof(char*));
}
}
return mazePointer;
}
我仍然不确定如何为第一个数组 [i] 分配内存。谁能告诉我我的方向是否正确?