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++函数的返回类型没有"数组"这一结构,因此一般情况下我们会采用指针去接受数组的首地址来进行返回.另外由于函数体内定义的 ...
最新文章
- bloom filter 的Java 版
- 据说这是熟练掌握python的爷们_dongbei 是一门基于 Python 3 二次开发的东北方言编程语言...
- 栈区,堆区,全局区,文字常量区,程序代码区详解(程序中不同类型数据所在区)
- gprof, Valgrind and gperftools - an evaluation of some tools for application level CPU profiling on
- 论文学习9-Bidirectional LSTM-CRF Models for Sequence Tagging(LSTM,BILSTM,LSTM-CRF,BILSTM-CRF
- Linux下Apache安装与配置(详细步骤+代码+验证)
- bat执行java程序的脚本解析
- 软件测试周刊(第25期):不要成天到晚地找意义
- JESD204B 协议解析和参数理解
- 人脸识别主要算法原理
- JavaScript判断一个时间点在不在某段时间段范围之内
- echarts三维建筑地图注解
- Codeforces 437B 437C
- matlab 矩阵左右乘除
- non-compatible bean definition of same name and class [com.echo.util.FileUploadDispatcher]
- java severlet 获取当前路径_Java 获取当前路径的方法总结
- dlib 安装教程(三种方法)
- 苹果6怎样分屏_苹果凌晨更新,看片神器iPad一秒下线(文末有福利)
- if,while选择结构和while,dowhile,for循环的使用
- 网易云安装以及玄学打开问题