我不明白为什么我的答案是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;
答案可以更容易理解,如果我们考虑m[][3]={1,2,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----------------------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句