c++ 函数返回数组
以下转自:http://blog.csdn.net/lijiayu2015/article/details/52821562
C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现。
不能直接返回函数中定义的数组,会被释放掉
float* add(a[3],b[3])
{
float sum[4];
sum[0]=a[0]+b[0];
sum[1]=a[1]+b[1];
sum[2]=a[2]+b[2];
return sum;
}//main()中调用使用
int main()
{float A[3] = { 1, 1, 1};float B[3] = { 1, 2,3};float *M = add(A, B);cout << M[0] << " " << M[1] << " "<<M[2]<<endl;cout << M[0] << " " << M[1] << " " << M[2] << endl;system("pause");return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
第一次输出的结果正确,第二次输出结果不对,因为指针函数返回的指针被释放了。
正确方法1:函数内使用new动态分配内存
float* add(float a[3], float b[3])
{float* sum=new float[3];//替换sum[0] = a[0] + b[0];sum[1] = a[1] + b[1];sum[2] = a[2] + b[2];return sum;
}int main()
{float A[3] = { 1, 1, 1};float B[3] = { 1, 2,3};float *M = add(A, B);cout << M[0] << " " << M[1] << " "<<M[2]<<endl;cout << M[0] << " " << M[1] << " " << M[2] << endl;delete[] M;//增加system("pause");return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
方法2:在函数外定义数组,通过形参传入函数,在函数内修改数组
void add(float a[3], float b[3],float sum[3])
{sum[0] = a[0] + b[0];sum[1] = a[1] + b[1];sum[2] = a[2] + b[2];
}int main()
{float A[3] = { 1, 1, 1};float B[3] = { 1, 2,3};float M[3];add(A, B, M);cout << M[0] << " " << M[1] << " "<<M[2]<<endl;cout << M[0] << " " << M[1] << " " << M[2] << endl;system("pause");return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
以上转自:http://blog.csdn.net/lijiayu2015/article/details/52821562
踩了坑之后,正确用法:
调用:
finish!
c++ 函数返回数组相关推荐
- linux shell 字符串 数组,bash shell函数返回数组字符串
#!/bin/bash # script:getselfvar.sh # 每个脚本中都在末尾追加了一段特殊的域名ip序列,需要将这段序列存放到数组变量中,供 # 脚本使用,例子中的ip和域名是处理过的 ...
- 【转】C 从函数返回数组
http://www.runoob.com/cprogramming/c-return-arrays-from-function.html C 从函数返回数组 C 数组 C 语言不允许返回一个完整的数 ...
- c语言怎么返回数组,c++从函数返回数组的方法代码
c++如何从函数返回数组? C++ 从函数返回数组 C++ 不允许返回一个完整的数组作为函数的参数.但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针. 如果您想要从函数返回一个一维数组,您 ...
- matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...
libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...
- 关于C语言函数返回数组的问题【转】
(转自:https://blog.csdn.net/earbao/article/details/53401800) 关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实 ...
- c语言在函数中返回数组,关于C语言函数返回数组的问题
关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实现类似功能,不过需要注意: 1.该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放. 可以是全局 ...
- c语言中自定义函数返回数组,C语言自定义函数返回数组的方法(图文详解)
C语言自定义函数返回数组的方法(图文详解) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢? 能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下: 直接返回str ...
- vb.net函数返回数组
今天写了一个程序需要函数返回数组,看了别的网友的程序发现有bug,特此记录一下 返回函数写法 Private Function Fun_Fp32ToByte(ByVal fp32 As Single) ...
- c 语言 函数返回数组_如何在C ++函数中返回数组
c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...
- C++ 函数返回数组处理方法
最近在通过函数返回数组时踩到了一些坑,在此记录一下. 首先C++函数的返回类型没有"数组"这一结构,因此一般情况下我们会采用指针去接受数组的首地址来进行返回.另外由于函数体内定义的 ...
最新文章
- Spring Boot 打包不同环境配置与 Shell 脚本部署
- 成本砍砍砍!不用数据也能用 BERT 做对比学习?
- PL/SQL Developer 和 instantclient客户端快速安装配置(图文)
- linux shell if 参数
- CentOS下Storm 1.0.0集群安装详解
- java信号灯_java 多线程-信号灯法
- 工作66:动态生成二维码
- 2008中国软件企业出口(外包)20强
- jquery 替换括号里面内容_【推荐】前端框架 Bootstrap 5.0 alpha 发布,不再依赖 jQuery...
- Cas单点登录的服务器端和客户端的配置
- laravel 与 tp5 获取控制器 方法名
- 你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!
- C#利用word2007插件实现word转pdf
- 更改Edge浏览器缓存位置
- windows配置pip加速器
- 小白学python需要多久_自学Python要多久才能学会
- 速写人物的脸型怎么画?如何画好人物脸型?
- Python绘制太阳花(初学者)
- 【歪门邪道】想要敲代码爽,桌面一定要酷炫
- 利用window.location实现下载文档
热门文章
- UPC新生训练赛32场
- 【必看】HTML+CSS去掉img图片底部的空白的3种通用方法
- js两种移除事件的方法
- 【openEuler系列】配置本地yum源
- 福建师范大学2022年2月课程考试《心理学》作业考核试题
- 去雾论文Single Image Defogging Method Based on Image Patch Decomposition and Multi-Exposure Image Fusion
- 从个人英雄到群体英雄
- stc12c5a60s2驱动TEA5767收音机模块硬件调试总结
- vue项目-前端请求接口报405 not allowed
- OpenCV—python 颜色直方图与直方图均衡化