Arrays 在CLR中通过指针访问数组的值
关于通过指针访问数组的值,我有一个问题。 在本机C++语言中,我可以通过以下代码< /P>访问该元素Arrays 在CLR中通过指针访问数组的值,arrays,opencv,visual-c++,c++-cli,clr,Arrays,Opencv,Visual C++,C++ Cli,Clr,关于通过指针访问数组的值,我有一个问题。 在本机C++语言中,我可以通过以下代码< /P>访问该元素 int a[]={1,2,3}; cout<<*(a+1); inta[]={1,2,3}; cout当您声明inta[]时,您应该问问自己什么是a 答案是:一个整数数组。它也是数组中第一个整数的地址 所以当你调用*(a+1) 它被解释为: 取a的地址并将int的大小添加到其中(a+1) 转到结果地址并获取其内容 当您声明cv::Mat a 它不是数组。a是一个对象,不是地址 现在
int a[]={1,2,3};
cout<<*(a+1);
inta[]={1,2,3};
cout当您声明inta[]
时,您应该问问自己什么是a
答案是:一个整数数组。它也是数组中第一个整数的地址
所以当你调用*(a+1)代码>
它被解释为:
取a的地址
并将int的大小添加到其中(a+1)
转到结果地址并获取其内容
当您声明cv::Mat a代码>
它不是数组。a是一个对象,不是地址
现在(a+1)
只有在cv::Mat
具有操作符+
时才有任何意义。否则将导致错误。即使它有操作符+
我猜返回值将是cv::Mat
而不是整数
*(a+1)
没有意义,因为结果不是地址
最后,要使用cout
打印它,还必须实现流操作符operatorarray->指针衰减与获取数组地址有很大不同。如果您确实使用了地址,则后续的+1
将前进sizeof(int[3])
。在利用上述建议后,我已解决了此问题。非常感谢你。
cv::Mat a;
cout<<*(a+1);