在CLR中通过指针访问数组的值

时间:2014-09-18 11:57:58

标签: arrays opencv visual-c++ c++-cli clr

我有一个关于通过指针访问数组值的问题。 在本机C ++语言中,我可以通过以下代码访问该元素

int a[]={1,2,3};
cout<<*(a+1);

所以,我可以得到“2”。

但是,当我使用C ++ CLR和openCV 2.4.7时,会出现错误。代码如下所示。

cv::Mat a;
cout<<*(a+1);

我不知道在搜索一些网站后如何处理它。希望有人能帮助我。谢谢!

1 个答案:

答案 0 :(得分:1)

当你宣布int a[]时,你应该问问自己是什么?

答案是:a是整数数组。它也是数组中第一个整数的地址。

所以当你致电*(a+1);

它被解释为:

  1. a的地址并添加int的大小(a + 1)。

  2. 转到结果地址并获取其内容。

  3. 宣布cv::Mat a;时 它不是一个数组。 a是一个对象,而不是一个地址。

    现在(a+1)只有在cv::Mat拥有operator +时才有意义。否则会导致错误。即使它有operator +我猜测返回值将是cv::Mat而不是整数。

    *(a+1)没有意义,因为结果不是地址。

    最后,要使用cout进行打印,还必须使用参数operator<<来实现流运算符cv::Mat