C++ 如何在矩阵中使用指针。这行代码是什么意思:int r=**(+;+;b);

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在我看来,不建议在

我不明白为什么我的答案是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]; // 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----------------------------+