Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在CLR中通过指针访问数组的值_Arrays_Opencv_Visual C++_C++ Cli_Clr - Fatal编程技术网

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

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是一个对象,不是地址 现在

关于通过指针访问数组的值,我有一个问题。 在本机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是一个对象,不是地址

    现在
    (a+1)
    只有在
    cv::Mat
    具有
    操作符+
    时才有任何意义。否则将导致错误。即使它有
    操作符+
    我猜返回值将是
    cv::Mat
    而不是整数

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


    最后,要使用
    cout
    打印它,还必须实现流操作符
    operatorarray->指针衰减与获取数组地址有很大不同。如果您确实使用了地址,则后续的
    +1
    将前进
    sizeof(int[3])
    。在利用上述建议后,我已解决了此问题。非常感谢你。
    cv::Mat a;
    cout<<*(a+1);