我获得了以下代码作为练习的一部分。我被指示创建一个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;
的用途。我知道在任何变量前添加*
意味着“给我任何地址”。
+0做什么?
答案 0 :(得分:4)
*(m+0)
相当于m[0]
。因此,整个陈述是将8
分配给m[0]
。
答案 1 :(得分:2)
它取消引用m(给你它的值)我猜测它是+ 0,这样你就可以添加不同的值并得到矩阵的结果部分
数组在内存中是连续的,所以如果你要添加1而不是0,你可以将矩阵中的下一个值设置为8。
答案 2 :(得分:1)
*(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)
组件。