C++ 如何在矩阵中使用指针。这行代码是什么意思:int r=**(+;+;b);
我不明白为什么我的答案是4?谁能解释一下矩阵和指针吗。我的意思是,我知道矩阵是什么,它们是一个2行表,但我不知道如何在矩阵中使用指针,如下面的示例:C++ 如何在矩阵中使用指针。这行代码是什么意思:int r=**(+;+;b);,c++,pointers,matrix,C++,Pointers,Matrix,我不明白为什么我的答案是4?谁能解释一下矩阵和指针吗。我的意思是,我知道矩阵是什么,它们是一个2行表,但我不知道如何在矩阵中使用指针,如下面的示例: int m[][3]={1,2,3,4,5,6,7,8,9}; int (*b)[3]=&m[0]; int r=**(++b); std::cout << r; intm[][3]={1,2,3,4,5,6,7,8,9}; int(*b)[3]=&m[0]; int r=**(++b); std::cout在我看来,不建议在
int m[][3]={1,2,3,4,5,6,7,8,9};
int (*b)[3]=&m[0];
int r=**(++b);
std::cout << r;
intm[][3]={1,2,3,4,5,6,7,8,9};
int(*b)[3]=&m[0];
int r=**(++b);
std::cout在我看来,不建议在实际使用中使用指针,而只是为了学术理解:
int m[][3]={1,2,3,4,5,6,7,8,9};
int (*b)[3]=&m[0]; // b is a pointer to an array of 3
// and is initialized to point to 1st row of m.
这里我们首先递增b
。这意味着b
现在指向m
的第二行
然后我们对其进行二次引用,给出第二行的第一行元素< <代码> m < /代码>(4)< p>如果我们考虑<代码> M[] [3 ]={1,1,3,4,5,6,7,8,9},答案可以更容易理解;代码>为m[][3]={{1,2,3},{4,5,6},{7,8,9}代码>
(*b)[3]=&m[0]
是指向长度为3
的数组的指针,该数组指向m[][3]
中的第一行元素,即{1,2,3}
当您增加它时(通过执行++b
),它将指向m[][3]
中的第二行元素,即{4,5,6}
然后,r
被分配给b
所指向的值,由于它被解引用两次,因此将是b
所指向行中的第一个整数值
+------+------+------+ +------+------+-------+
| 1 | 2 | 3 | | 4 | 5 | 6 |
+------+------+------+ +------+------+-------+
Gets the value '4' ^ and not the row's address,
| which *b points to
int r = **b----------------------------+
显然不会在任何实际工作中使用此代码语义。。。答案仍然很好!你是想把**
也放在这个问题上吗?是的,我放了@doctorlove@user2843560我在前面编辑了标题,为您更正了它。希望没问题。我在标题中加了一个*吗?对不起,谢谢@Streppel
+------+------+------+ +------+------+-------+
| 1 | 2 | 3 | | 4 | 5 | 6 |
+------+------+------+ +------+------+-------+
Gets the value '4' ^ and not the row's address,
| which *b points to
int r = **b----------------------------+