天天看点

C指针的非法与合法应用

这两天被项目一个函数逼疯了,只怪自己以前学艺不精,现在只能二把刀上阵,经常被错误搞得晕头转向。

目前阶段在设计一个函数,输入为一张车牌图片,目的是实现滑动窗的分类,共三个分类即三个数组指针,不知道如何同时传三个数组,最后无奈只能在函数外生命数组,然后在函数内分配内存,通过 & 来进行值的修改,完成传送。

一开始的函数头为:

int windowpross(Mat ori_ima,areaWindows &*han,areaWindows &*city,areaWindows &*nwc,int val_pos);
           

结果编译提示:“指向引用的指针非法”。

于是问度娘,搜到了以下答案:

 int** p1;         // 合法。指向指针的指针

  int*& p2;         // 合法。指向指针的引用

  int&* p3;         // 非法。指向引用的指针是非法的

  int&& p4;         // 非法。指向引用的引用是非法的

连忙修改为:

int windowpross(Mat ori_ima,areaWindows *&han,areaWindows *&city,areaWindows *&nwc,int val_pos);
           

功能实现了!撒花,虽然比较弱= =

整体的作用是为了修改这是三个数组,*han,*city,和*nwc,并将三个的长度输出来。

比较弱,所以想了本办法把这所有的东西输出来。

首先是将三个数组在函数外先申明,但没有分配储存空间,而是将空间的分配放在函数中。通过取地址操作就能修改了。

areaWindows *han;//函数之外
areaWindows *city;
areaWindows *nwc;
           
han=new areaWindows[count_han];//函数之中


	city=new areaWindows[count_city];


	nwc=new areaWindows[count_nwc];
           
下一篇: Destroy