更改 C 结构中矩阵的内容

标签 c pointers matrix

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

这是我的结构:

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/

相关文章:

c++ - SDL_SetWindowSize是否触发窗口事件?

c - C 中的指针、malloc 和 char

JavaScript - 如何在显示为正方形/矩阵的元素线性数组中按键查找元素的 x,y 位置?

c - 如何在 Rust 中获取 C 指针的所有权并适本地删除它?

使用 strtok() 后的条件

C 库标识符和保留规则

c - 与 C 中指针的区别

c++ - Boost Container vector 可以通过非原始指针管理内存吗?

matlab - 使用 Matlab/Octave 向量化两个矩阵对应列的外积之和

python - np.matrix(np.array([0,0])) 和 np.matrix([0,0]) 有区别吗?