这个矩阵参考了什么?

What is being referenced for this matrix?

我得到了以下代码作为练习的一部分。我被指示创建一个 3x3 矩阵并为其分配特定值。

代码如下:

void minput(int* m, int row, int col) {
/* assign 3X3 matrix to following value 
     8     1     6
     3     5     7
     4     9     2
*/
    *(m+0) = 8;
}

我想弄清楚的是这段代码 *(m+0) = 8; 的用途。我知道在任何变量前添加 * 意味着 "give me whatever is that the address".

+0 有什么作用?

*(m+0) 等价于 m[0]。所以整个语句是将 8 分配给 m[0].

它取消引用 m(给你它的值)我猜它是 + 0 这样你就可以添加不同的值并得到矩阵的结果部分

数组在内存中是连续的,因此如果您要添加 1 而不是 0,您会将矩阵中的下一个值设置为 8。

*(m+0) = 8m[0] = 8 相同,它取消引用指向第一个元素的指针,然后为其分配值 8。在您的代码中,您通过一维数组表示矩阵,因此您可能希望将 (i,j) 组件索引为 m+i*col + j 或等价地 m[i*col+j],即行

*(m+i*col+j) = x // can also write is as m[i*col+j] = x

x 分配给 (i,j) 组件。