我目前正在为学校做一项作业,但目前我陷入困境。在我看来,我想要实现的目标相当简单。我已经定义了一个结构。在这个结构中我做了一个矩阵。我想做的下一件事是仅使用指向该结构的指针向该矩阵添加信息。
这是我的结构:
typedef struct maze{
char mazeMatrix[6][10];
};
以及我指向该结构的指针:
typedef struct maze* mazePointer;
然后我在另一个函数中初始化它。我一直在许多网站上寻找所需的语法,但找不到所需的语法。如何更改矩阵的内容,例如我想用“H”更改第一个条目(第一行,第一列)mazeMatrix[0][0]
。实现这一目标的语法是什么?
我还提供了指向需要更新结构的函数的指针。
最佳答案
给定:
mazePointer mp = ...;
mp->mazeMatrix[0][0] = 'H';
就我个人而言,我不想在 typedef 中隐藏指针,所以我会使用:
typedef struct Maze { char mazeMatrix[6][10]; } Maze;
Maze *mp = ...;
mp->mazeMatrix[0][0] = 'H';
结束行是相同的。请注意,您的 typedef struct maze { ...};
没有定义类型的名称;关键字 typedef
是多余的,应该删除(好的编译器会警告你这一点)。我可能也会简单地使用“matrix”这个词,而不是“mazeMatrix”;如果结构是一个迷宫,里面的矩阵就是迷宫的矩阵,不需要前缀。
调用上下文:
Maze m;
maze_modifier(&m);
调用上下文:
void maze_modifier(Maze *mp)
{
mp->mazeMatrix[0][0] = 'H';
...
}
<小时/>
My next issue is then printing this matrix from a pointer. I am using:
printf("%c", mazePointer->matrix[counter][counterA]);
The counters are just 2 variables from 2 nested for loops. Any suggestions?
这应该有效。所以应该这样:
void maze_printer(Maze *mp)
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 10; j++)
putchar(mp->mazeMatrix[i][j]);
putchar('\n');
}
}
关于更改 C 结构中矩阵的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028772/