以下转自: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++ 函数返回数组相关推荐

  1. linux shell 字符串 数组,bash shell函数返回数组字符串

    #!/bin/bash # script:getselfvar.sh # 每个脚本中都在末尾追加了一段特殊的域名ip序列,需要将这段序列存放到数组变量中,供 # 脚本使用,例子中的ip和域名是处理过的 ...

  2. 【转】C 从函数返回数组

    http://www.runoob.com/cprogramming/c-return-arrays-from-function.html C 从函数返回数组 C 数组 C 语言不允许返回一个完整的数 ...

  3. c语言怎么返回数组,c++从函数返回数组的方法代码

    c++如何从函数返回数组? C++ 从函数返回数组 C++ 不允许返回一个完整的数组作为函数的参数.但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针. 如果您想要从函数返回一个一维数组,您 ...

  4. matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...

  5. 关于C语言函数返回数组的问题【转】

    (转自:https://blog.csdn.net/earbao/article/details/53401800) 关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实 ...

  6. c语言在函数中返回数组,关于C语言函数返回数组的问题

    关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实现类似功能,不过需要注意: 1.该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放. 可以是全局 ...

  7. c语言中自定义函数返回数组,C语言自定义函数返回数组的方法(图文详解)

    C语言自定义函数返回数组的方法(图文详解) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢? 能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下: 直接返回str ...

  8. vb.net函数返回数组

    今天写了一个程序需要函数返回数组,看了别的网友的程序发现有bug,特此记录一下 返回函数写法 Private Function Fun_Fp32ToByte(ByVal fp32 As Single) ...

  9. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  10. C++ 函数返回数组处理方法

    最近在通过函数返回数组时踩到了一些坑,在此记录一下. 首先C++函数的返回类型没有"数组"这一结构,因此一般情况下我们会采用指针去接受数组的首地址来进行返回.另外由于函数体内定义的 ...

最新文章

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

热门文章

  1. android的pptp设置方法,Android系统如何配置PPTP 客户端拨号
  2. 新版本5G智慧课堂,你所不知道的现代教学
  3. 你好,请描述一下基于深度学习的目标检测的优点,字数越多越好
  4. centos7 安装Netdata
  5. 牛客错题、好题研究整理
  6. Vue.js 指令v-for和v-if和v-show
  7. 前端学习第三弹:利用div+css制作个人简历
  8. 2020.0403渐变知识总结
  9. 优化移动端VR游戏开发五大技巧
  10. [CF786B]Legacy