这个要求刚提出来我是比较蒙圈的,不知道什么叫以参数返回(后来才知道其实就是引入指针,把指针所指地址的内容在函数中修改)
实际的问题就是我们的函数一般只有一个返回值,那么如果我要他返回一个值,再得到一个值怎么办呢?只需要在外部定义个指针,在函数中直接就更改了,接下来以求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