我有一个关于通过指针访问数组值的问题。 在本机C ++语言中,我可以通过以下代码访问该元素
int a[]={1,2,3};
cout<<*(a+1);
所以,我可以得到“2”。
但是,当我使用C ++ CLR和openCV 2.4.7时,会出现错误。代码如下所示。
cv::Mat a;
cout<<*(a+1);
我不知道在搜索一些网站后如何处理它。希望有人能帮助我。谢谢!
答案 0 :(得分:1)
当你宣布int a[]
时,你应该问问自己是什么?
答案是:a是整数数组。它也是数组中第一个整数的地址。
所以当你致电*(a+1);
它被解释为:
取a
的地址并添加int的大小(a + 1)。
转到结果地址并获取其内容。
宣布cv::Mat a;
时
它不是一个数组。 a是一个对象,而不是一个地址。
现在(a+1)
只有在cv::Mat
拥有operator +
时才有意义。否则会导致错误。即使它有operator +
我猜测返回值将是cv::Mat
而不是整数。
*(a+1)
没有意义,因为结果不是地址。
最后,要使用cout
进行打印,还必须使用参数operator<<
来实现流运算符cv::Mat
。