初学编程的同学们可能对函数比较抵触,明明我本来就能完成的事情,一用函数就出了很多错。
我们小区门口经常有人用小扩音器放:“回收旧手机,旧手机换菜刀,换剪子,换盆!”
其实也可能换毛巾,换拖把。
如果直接用C++来写就是:
#include<iostream>
using namespace std;
int main(){
cout<<"回收旧手机,旧手机";
cout<<"换菜刀";
cout<<"换剪子";
cout<<"换盆";
}
如果想要广播出去换别的东西,就要改上面的代码。也可以写成函数:
void change(string s){
cout<<"换"+s;
}
这就叫做函数的声明,是不是很简单,change叫函数名,s叫形式参数,string是形式参数的类型。cout<<"换"+s;叫做函数体,也就是函数一队“{”“}”之间的代码段。void表示只执行函数体,并不返回其他信息。函数声明结束了,如何调用呢?
change("毛巾");
这样就可以调用了。也就是说在main函数中调用已经声明好的函数,需要函数名,而“毛巾”是实际的参数。实际参数是函数调用时实实在在的要换的东西,把它传递给形式参数s,就会输出换毛巾。我们看一下完整的代码:
#include<iostream>
using namespace std;
void change(string s){
cout<<"换"+s;
}
int main(){
cout<<"回收旧手机,旧手机";
cout<<"换菜刀";
cout<<"换剪子";
cout<<"换盆";
change("毛巾");
}
输出结果:
上面我们聊了聊函数的参数,其实还有一个很重要的东西叫返回值。
上一年级的小明同学在数学课上,老师提问5+6等于多少?小明虽然数学不好,但是很机灵,他从家里带了计算器。但不小心开了外音,计算器清晰的传出五加六等于十一。以上的场景可以用如下代码描述:
#include<iostream>
using namespace std;
void add(int a,int b){
int sum=a+b;
cout<<a<<"加"<<b<<"等于"<<sum;
}
int main(){
add(5,6);
}
虽然结果是对的,但是小明很尴尬啊。小明只想要看到结果,然后自己回答老师。所以程序应该是这样的。
#include<iostream>
using namespace std;
int add(int a,int b){
int sum=a+b;
return sum;
}
int main(){
int x=5;
int y=6;
int s=add(x,y);
cout<<x<<"加"<<y<<"等于"<<s;
}
这里我故意把程序写的比较啰嗦,我们把main()看做小明本人。add()看做计算器。先看我们熟悉的知识点,add是函数名,int a,int b是两个形式参数。x,y则是实际参数,当x,y传递给a,b后,计算器得出了结果sum=11,但并不直接输出,而是用return语句把sum返回。返回到哪里呢?返回给了调用add的表达式,也就是add(x,y),这个表达式等于11,则int s=11;可以理解成小明把5,6传给了计算器,计算器把11给了小明,最后小明自己说出结果。