前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 利用指针和结构体实现一个函数返回多个值

C++ 利用指针和结构体实现一个函数返回多个值

作者头像
chaibubble
发布2022-05-07 09:28:40
6790
发布2022-05-07 09:28:40
举报
文章被收录于专栏:深度学习与计算机视觉

在函数执行到return语句时,将不再向下执行,那么如何让函数一次性返回多个值? 一般可以用两种方式解决这个问题,利用指针和利用结构体

1.利用指针 直接上代码:

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main()
{
    
	int* test(int,int,int);
	int * result =test(1,2,3);
	 cout<<result[0]<<endl<<result[1]<<endl<<result[2]<<endl;
      getchar();
	  return 0;
} 

int * test(int a,int b,int c)
{
	int* presult =new int[3];
	presult[0] =a;
	presult[1] =b;
	presult[2] = c;
	return presult;
}

运行结果: 1 2 3

可以看到,我们其实定义了一个int类型的指针作为函数test的类型,所以这个函数的返回值也应该是一个int类型的指针,所以在第15行,我们定义了一个presult指针,并让它指向一个三个元素的数组。**(在这里,其实我们并没有定义数组,而是使用了动态内存分配的方式)**然后将三个形参分别写入到数组里,最后将指针作为函数的返回值返回。显然这个函数的功能是没有意义的,在这里只做演示而已。

利用指针作为函数的返回值的方式有一个很大的弊端,不管返回几个值,他们的类型都是相同的。所以为了避免这个问题,我还需要另一种方式,利用结构体。

2.利用结构体

还是先上代码:

代码语言:javascript
复制
#include <iostream>
using namespace std;
struct result
{
	int first;
	double second;
};
int main()
{
     result test(int a,double b);
     result returnvalue =test(1,2.1234);
	 cout<<returnvalue.first <<endl<<returnvalue.second<<endl;
      getchar();
	  return 0;
} 

result test(int a,double b)
{
	 struct result ret;
	 ret.first  = a;
	 ret.second = b;
	 return ret;
}

运行结果: 1 2.1234 结构体是C语言中的一种允许用户自定义的数据结构,其关键词为struct 。首先,我们定义了一个结构体类型叫result,它里面包含两个成员分别为int类型的first与double类型的second。 我们可以这样理解结构体类型,定义之后,result与int,double,float等C语言自带的数据类型没有区别,只不过这个result使我们自己定义的而已,更多关于结构体的内容可以参考: http://blog.csdn.net/chaipp0607/article/category/6627824 然后,我们定义的函数test其实就是一个result类型的函数,定义的变量ret和returnvalue 也是result类型的变量,test的返回值当然也是一个result类型的值。我们利用result类型的变量–returnvalue 中的成员,区分开int和double,实现返回值的类型不同。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档