C++使函数返回多个数组
1. 将待返回的数组在外部进行创建,之后作为函数的输入参数被修改,由于函数不需要返回值,不会产生内存泄露之类的问题。举例如下:
#include <iostream>
const int ArSize = 12;
void sum_and_sub(int arr1[], int arr2[], int ArSize, int sum_result[], int sub_result[]);
int main()
{using namespace std;int arr1[ArSize] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int arr2[ArSize] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int sum_result[ArSize], sub_result[ArSize];sum_and_sub(arr1, arr2, ArSize, sum_result, sub_result);for (int i = 0; i < ArSize; i++){cout << sum_result[i] << " ";};cout << endl;for (int i = 0; i < ArSize; i++){cout << sub_result[i] << " ";};cout << endl;return 0;
}
void sum_and_sub(int arr1[], int arr2[], int ArSize, int sum_result[], int sub_result[])
{for (int i = 0; i < ArSize; i++){sum_result[i] = arr1[i] + arr2[i];sub_result[i] = arr1[i] - arr2[i];};
}
这种写法的问题很明显:
首先是写法复杂,因为要预先声明多个输入多个输出;
其次是因为你需要的输入和输出都是作为函数的输入,所以容易混淆;
最后在某些情况下会导致未初始化的值。
2. 结构化,上述函数的前两个问题都可以通过结构化来避免。举例如下:
#include <iostream>
const int ArSize = 12;struct Result {int sum_result[ArSize];int sub_result[ArSize];Result(){memset(this, 0, sizeof(Result));}
};Result sum_and_sub(int arr1[], int arr2[], int ArSize);using namespace std;int main()
{int arr1[ArSize] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int arr2[ArSize] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };Result results = sum_and_sub(arr1, arr2, ArSize);for (int i = 0; i < ArSize; i++){cout << results.sum_result[i] << " ";};cout << endl;for (int i = 0; i < ArSize; i++){cout << results.sub_result[i] << " ";};cout << endl;return 0;
}Result sum_and_sub(int arr1[], int arr2[], int ArSize)
{Result results;for (int i = 0; i < ArSize; i++){//cout << results.sum_result[i];results.sum_result[i] = arr1[i] + arr2[i];results.sub_result[i] = arr1[i] - arr2[i];};return results;
}
这种写法相对来说比上面显得整洁,结构化也比较好管理。
后续还有用指针的写法。
REF:https://blog.csdn.net/shi2xian2wei2/article/details/95488707
C++使函数返回多个数组相关推荐
- c语言函数返回值存放数组,C语言函数返回数组
C编程语言不允许返回整个数组作为函数的参数.但是,您也可以返回一个指针,没有索引到一个数组中指定数组的名称.你将学习在下一章节中,这样你就可以跳过这一章,直到你理解这个概念在C中的指针的指针 如果你想 ...
- c++函数返回二维数组_C++ 怎样让函数返回数组
作者:杨溪 链接:https://www.cnblogs.com/yangxi/archive/2011/09/18/2180759.html 这个问题属于非常初级的问题,但是对于初学不知道的人可能 ...
- C语言如何返回char类型,函数返回char类型数组,调用 函数后如何接收值?
我现在刚在学C语言,今天想要实现一个功能: 用C语言读取一个文件的指定行,(如读取a.log文件的3--5行),现在实现了读取函数, 但在main函数调用时不知道怎么接收返回的值. 代码如下: #in ...
- C语言 函数返回二维数组
#include <stdio.h> #include <stdlib.h> #include <string.h>#define N 5double** Link ...
- C语言子函数返回二维数组讨论
C语言中,在子函数中将一个二维数组返回 都知道,在子函数中,一定不能返回一个局部变量的指针,局部变量在子函数中进行创建,子函数调用结束后,该指针将被释放掉. 如果被指针所指向的该内存空间被别的程序占用 ...
- C语言中函数返回的字符数组为null——函数中的局部字符数组
今天在刷题时,碰到这样一个问题,我定义的函数要求返回的是字符串,我在函数中定义了一个字符数组来表示,但是运行时发现函数的返回值为空. 解决方法: 方法1:将字符数组定义为全局变量 方法2:用stati ...
- c++ vector转换成二维数组(C++ 函数返回二维数组)
c++不能直接返回数组,可以返回指针,指针指向一个地址. float **convertVector2array(vector<float> v, int rows, int cols) ...
- c语言枚举如何当函数返回值,C语言学习五 — 数组与枚举
数组 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 numbe ...
- c 语言 函数返回数组_如何在C ++函数中返回数组
c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...
- linux shell 字符串 数组,bash shell函数返回数组字符串
#!/bin/bash # script:getselfvar.sh # 每个脚本中都在末尾追加了一段特殊的域名ip序列,需要将这段序列存放到数组变量中,供 # 脚本使用,例子中的ip和域名是处理过的 ...
最新文章
- 射频全网通笔记(附全球频段划分及主要运营商对应表)
- python3实现字符串的全排列的方法(无重复字符)
- JavaWeb(二)——Http协议
- 推荐给程序猿们好用的谷歌插件
- 动态绑定 datagridview
- 可以查python题的_Python练习题4.9查询水果价格
- JavaScript文件存储信息对象cookie编码生存期
- SQL*Plus 系统变量之32 - NEWP[AGE]
- day09 python之函数进阶
- python cls参数_python cls self 讲解
- 【脑洞探究】等公交该站在哪儿比较合适?——关于减少吸入空气污染物(pm2.5 or 雾霾等)而选择合适等候公交车位置的探究
- c语言20%3c=10,C语言 练习题(2)
- 可实现ffmpeg转码的cuda显卡
- 定时任务中cron表达式详解
- 用Windows自带图片查看器查看图片的dpi分辨率大小
- web开发 省市县三级联动
- 高级项目经理资质论文
- KK凯文.凯利:第一届中国社群领袖峰会演讲实录(全部版)
- javascript 递归乘阶
- 嵌入式面试总结(持续更新)