C++学习(17)

#学习自用#

多返回值的处理

如果返回值是同一种类型,那么可以返回vector或者数组,但是C++中不能返两种类型的返回值,在实际情况下,一个函数可能就是需要返回一个字符串和一个浮点型,这时应该如何处理呢。

返回结构体

将函数的返回值设置为一个结构体,结构体成员中添加我们需要返回的几种变量类型。

	#include<iostream>
	using namespace std;
	struct A 
	{
		string str;
		float i;
	};
	A function(string name,float attrib)
	{
		return {name,attrib};
	}

	int main()
	{
		A player1;
		player1=function("odd", 1.0);
		cout << player1.i << endl;
		cout << player1.str << endl;
		cin.get();
	}

这里要注意返回值不能是结构体指针,因为函数内部创建的变量会在函数结束时销毁,如果用指针去接收,那么player1与player指向同一地址,但是 player.str , player.i 的值就已经失效了。

返回元组

元组是一个类,它可以包含多个变量且不限制类型。

	#include<iostream>
	#include<tuple>
	using namespace std;
    tuple<string, float>function(string str,float i)
	{
		return make_tuple(str, i);
	}
	int main()
	{
		auto i= function("odd", 1);
		cout << get<0>(i) << endl;//元组的成员访问
		cout << get<1>(i) << endl;
		cin.get();
	}

其实返回元组与返回结构体类似 ,但是对于元组成员的访问并不像结构体成员的访问那样清晰,结构体成员的访问带上了变量名,在篇幅长的代码中能够提示我们变量代表的含义,所以返回元组使用的并不多,这里也仅作一个了解。

引用传参

用引用传入函数的参数,可以达到在函数内部对函数外部变量的修改,这时就可以取消返回值。

#include<iostream>
using namespace std;	
void function(string& str, float& i)
	{
		str = "odd";
		i = 1;
	}
	int main()
	{
		string str1;
		float i = 0;
		function(str1, i);
		cout << str1 << endl;
		cout << i << endl;
		cin.get();
	}

指针传参

使用指针传参应对多返回值的原理与使用引用传参相同,都是达到函数内部对函数外部变量的修改的效果,从而不需要返回值。

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值