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];

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值