这个矩阵参考了什么?
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) = 8
与 m[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)
组件。
我得到了以下代码作为练习的一部分。我被指示创建一个 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) = 8
与 m[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)
组件。