最保险的函数间数组作为参数值传递与返回方法,用memcpy函数!
来源:互联网 发布:淘宝规则在哪里查看 编辑:程序博客网 时间:2024/05/21 20:30
举例代码如下:
分析:函数mycvCalcHist中自己定义了一个名为hist的数组,实际上就是out_hist这个数组,out_hist是主调函数中的数组,在这里,我只需要最后做一个memcpy即可实现值返回;如果要作值传递,我猜想也简单(并未作实际测试),进入函数时把out_hist这个数组值复制给hist就行,函数快结束时再把hist的值复制到out_hist应该就可以了!由于是局部数组,所以函数运行完后hist就给释放掉了,所以也不会多占用多少内存空间。
肯定有人要问,为啥不用数组名作为参数传递从而改变实参数组的值?这种方法一般情况下都可以,我也测试了,然而这里就是不行,我估计与memset(hist, 0, sizeof(hist));这句语句有关!所以以后遇到这种情况最保险的方法还是用memcpy函数!
void mycvCalcHist(IplImage *img,double out_hist[256]){int i=0, j=0; double temp1=0;int temp2=0; const int hist_sz = 256;//0到255,一共256个灰度值 double hist[hist_sz]; memset(hist, 0, sizeof(hist)); for( i = 0; i < img->height; i++ ) { for( j = 0; j < img->width; j++ ) {temp1=cvGet2D(img,i,j).val[0];temp2=int(temp1);//作类型转换 hist[temp2]++; //这里实现了hist中存储各灰度值出现的次数 } } memcpy(out_hist,hist, sizeof(hist)); //肯定有人要问,为啥不用数组名作为参数传递从而改变实参数组的值 //这种方法一般情况下都可以,我也测试了,然而这里就是不行,我估计与 //memset(hist, 0, sizeof(hist));这句语句有关}
分析:函数mycvCalcHist中自己定义了一个名为hist的数组,实际上就是out_hist这个数组,out_hist是主调函数中的数组,在这里,我只需要最后做一个memcpy即可实现值返回;如果要作值传递,我猜想也简单(并未作实际测试),进入函数时把out_hist这个数组值复制给hist就行,函数快结束时再把hist的值复制到out_hist应该就可以了!由于是局部数组,所以函数运行完后hist就给释放掉了,所以也不会多占用多少内存空间。
肯定有人要问,为啥不用数组名作为参数传递从而改变实参数组的值?这种方法一般情况下都可以,我也测试了,然而这里就是不行,我估计与memset(hist, 0, sizeof(hist));这句语句有关!所以以后遇到这种情况最保险的方法还是用memcpy函数!
0 0
- 最保险的函数间数组作为参数值传递与返回方法,用memcpy函数!
- 数组作为函数参数的传递方法
- [转载]函数返回值为数组以及数组作为参数传递的问题
- 二维数组 作为函数参数 传递方法
- 数组作为函数参数的传递
- 数组作为函数的参数传递
- 数组作为函数的参数传递
- 数组作为函数参数传递
- 数组作为函数参数传递
- C++ 多维数组作为函数的返回值和参数
- 数组作为函数的参数和返回值
- 实现数组作为函数参数传递,切返回值也是数组
- “引用作为函数参数”与 “引用作为函数返回值”
- 二维数组作为函数参数传递时函数的声明
- 数组作为函数参数并传递数组元素个数的几种有效方法
- 函数作为参数的传递
- 关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结
- 多维动态数组作为函数传递参数
- Struts2中Action接收参数的方法
- linux下解压命令大全
- java远程调用
- C++ Primer 学习笔记_95_用来大型程序的工具 -多重继承与虚继承
- 关于UIScrollView的约束问题
- 最保险的函数间数组作为参数值传递与返回方法,用memcpy函数!
- ZooKeeper分布式过程协同技术详解
- Oracle查询死锁及处理方法
- C++ Primer 学习笔记_96_用以大型程序的工具 -多重继承与虚继承[续1]
- C++ Primer 学习笔记_97_用来大型程序的工具 -多重继承与虚继承[续2]
- 230. Kth Smallest Element in a BST
- Android应用发送短信的实现
- 八大排序算法 之 归并排序
- 如果让我设计拉勾移动端 App