0

我目前正在为学校做作业,目前我被困住了。在我看来,我想要实现的目标相当简单。我已经定义了一个结构。在这个结构中,我制作了一个矩阵。我要做的下一件事是仅通过使用指向该结构的指针来向该矩阵添加信息。

所以这是我的结构:

typedef struct maze{
    char mazeMatrix[6][10];
};

以及我指向该结构的指针:

typedef struct maze* mazePointer;

然后我在另一个函数中初始化它。我一直在许多网站上寻找所需的语法,但找不到所需的语法。如何更改矩阵的内容,例如我想mazeMatrix[0][0]用“H”更改第一个条目(第一行,第一列)。实现这一点的语法是什么?

我还给出了一个需要更新结构的函数的指针。

4

1 回答 1

1

鉴于:

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';
    ...
}

我的下一个问题是从指针打印这个矩阵。我在用:

printf("%c", mazePointer->matrix[counter][counterA]);

计数器只是来自 2 个嵌套 for 循环的 2 个变量。有什么建议么?

那应该行得通。所以应该这样:

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');
    }
}
于 2013-02-22T16:37:03.577 回答