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



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

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

所以,我可以得到"2"。

但是,当我使用C++CLR和openCV 2.4.7时,出现了一个错误。代码如下。

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

搜索了一些网站后,我不知道该怎么处理。希望有人能帮助我。谢谢!

当您声明int a[]时,您应该问问自己什么是a?

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

所以当你呼叫*(a+1);

它被解释为:

  1. a的地址,并将int的大小加到它上面(a+1)。

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

当您申报cv::Mat a;时它不是一个数组。a是一个对象,而不是地址。

现在CCD_ 5只有在CCD_ 6具有CCD_。否则将导致错误。即使它有operator +,我猜返回值将是cv::Mat而不是整数。

CCD_ 10没有任何意义,因为结果不是地址。

最后,要用cout打印它,还必须实现参数为cv::Mat的流运算符operator<<

最新更新