C++ 变量值以参数返回

这个要求刚提出来我是比较蒙圈的,不知道什么叫以参数返回(后来才知道其实就是引入指针,把指针所指地址的内容在函数中修改)

实际的问题就是我们的函数一般只有一个返回值,那么如果我要他返回一个值,再得到一个值怎么办呢?只需要在外部定义个指针,在函数中直接就更改了,接下来以求10个数的最大数和最大数个数为例写一段,函数返回最大值,最大值个数由指针返回;

代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
class test{
	int a[10];
	public:
		void input(){
			for(int i=0;i<10;i++)
			{
				cin>>a[i];
			}
		}
		int maxx(int *s)
		{
			*s=0;
			int maxn=a[0];
			for(int i=0;i<10;i++)
			{
				if(a[i]>=maxn)
					maxn=a[i];
			}
			for(int i=0;i<10;i++)
			{
				if(a[i]==maxn)
					(*s)++;
			}
			return maxn;
		}
};
int main()
{
	int ges;
	test liao;
	cout<<"输入10个数"<<endl;
	liao.input();
	cout<<"他们的最大值为"<<liao.maxx(&ges)<<endl;
	cout<<"  最大值有"<<ges<<"个"<<endl;
	//cout<<"他们的最大值为"<<liao.maxx(&ges)<<" 最大值有"<<ges<<"个"<<endl;
	//printf("他们的最大值为%d 最大值有%d个\n",liao.maxx(&ges),ges);
}


上述的指针法是网上给出的,感觉之所以没报错是要感谢编译器的容错性(因为连续输出是会错的),所以根据老师上课讲的,我打算换一种写法,这种使用方法与其让我说是指针还不如说是引用

ps:其实定义全局变量也有相似的效果,但程序很大时,全局变量这种,越少越好吧2333
所以改写后觉得是:

#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
class test{
	int a[10];
	public:
		void input(){
			for(int i=0;i<10;i++)
			{
				cin>>a[i];
			}
		}
		int maxx(int &s)
		{
			s=0;
			int maxn=a[0];
			for(int i=0;i<10;i++)
			{
				if(a[i]>=maxn)
					maxn=a[i];
			}
			for(int i=0;i<10;i++)
			{
				if(a[i]==maxn)
					s++;
			}
			return maxn;
		}
};
int main()
{
	int ges;
	test liao;
	cout<<"输入10个数"<<endl;
	liao.input();
	//cout<<"他们的最大值为"<<liao.maxx(ges)<<endl;
	//cout<<"  最大值有"<<ges<<"个"<<endl;
	cout<<"他们的最大值为"<<liao.maxx(ges)<<" 最大值有"<<ges<<"个"<<endl;
	//printf("他们的最大值为%d 最大值有%d个\n",liao.maxx(&ges),ges);
}
这样来引用发现就没有问题了hh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值