0.函数的引入
为什么要用函数呢?
比较官方的说法是,过程的复用,你的一段逻辑,你有一段逻辑不断的在复用,就封装成函数去调用它。
通俗的说法就是,把重复的过程集中到一块。例如,大家都学过如何求正方形的面积,有一天老师问你,边长为2的正方形的的面积是多少?你回答是4,老师问你边长为3的正方形的面积是多少?你回答是9。这个过程中,老师不断向你问同一种类型的问题,你利用掌握的原理,从老师那里输入数据,根据原理,进行操作,然后告诉老师答案。
总结:如果你的程序需要重复的去使用一段逻辑,那么就定义成函数。
1.函数的定义
1.1函数的组成
C++的函数有5部分构成。
名称 | 含义 | 是否可省略 |
函数类型 | 函数的数据类型,一般为int | 否 |
函数名 | 函数的名称,在C++规定的情况下可以随便起 | 否 |
参数 | 要传入的值 | 是 |
函数体 | 要执行的逻辑 | 是 |
返回值 | 需要返回给调用函数的部分 | 是 |
一段简单函数描述
int fun (int x)
{
printf("%d",x);
return 0;
}
1.2 函数各部分详细解释
- 函数数据类型:表明当前这个函数是什么类型的,如果是int型,那么返回值的地方就要返回一个int类型的数据。如果是double型的,那么返回值就要是各double型
- 函数名:是自定义的函数名,一般以英文命名,禁止使用数字命名。
- 参数:表示一个函数的输入部分,不写的时候称为空参。参数可以有一个或者多个,中间用逗号隔开。
- 函数体:函数的逻辑部分,根据参数进行逻辑计算。
- 返回值: 进行逻辑运算后的结果要返回给函数调用的地方。返回的数据类型要跟函数的数据类型保持一致。
1.3函数的一个通俗案例
用包饺子的机器来说明,一个包饺子的机器,给它输入面和饺子馅,它就会按照预先设定的逻辑进行包饺子,产出物就是包好的饺子。
在这个过程中,
面和饺子馅就是函数的参数,你必须给饺子机输入面和饺子馅,它才能进行制作饺子的过程。当然你输入韭菜馅,那么你包的就是韭菜馅的饺子,你输入白菜馅,你包的就是白菜馅的饺子。但是,注意的一点就是,你必须输入的是一种馅,你不能往饺子机里扔两块石头啊,这说明,我们要按照要求的类型传参数,不能乱传。
中间包饺子机是逻辑处理过程,只要你的输入是正确的(参数类型正确),他就会按照预定逻辑进行制作饺子,也就是函数体部分。
最后输出的就是包好的饺子,它会呈现给制作饺子的人(输入面和饺子馅)的人。包好的饺子就是返回值。
1.4 函数的位置
在C++,函数的位置可以有两个,一个是在main函数前面,一个是在main函数后面,需要注意的是,如果你的函数写在后面,必须要在main函数前面加一个函数的定义(不写函数体),以分号结尾。
#include<iostream>
#include<cstdio>
using namespace std;
int fun (int x) //函数定义在前
{
printf("%d",x);
return 0;
}
int main()
{
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
int fun (int x); //函数写在后面,必须在前面先定义
int main()
{
return 0;
}
int fun (int x) //函数定义在后
{
printf("%d",x);
return 0;
}
2.函数的使用
2.1基础用法
函数定义的时候是 数据类型+函数名+参数。函数使用的时候只需要 函数名+参数即可。例如:
#include<iostream>
#include<cstdio>
using namespace std;
int fun (int x)
{
printf("%d",x);
return 0;
}
int main()
{
fun(5); //函数调用过程
return 0;
}
输出:
上面的例子表示,调用fun函数,把5这个数字传递给x这个参数,然后在函数内部输出。那么在函数内部,x的值就是5。
如果我们要完成一个功能:不论用户输入什么数字,都显示出它的5倍。那么只要像下面这样写就行。
#include<iostream>
#include<cstdio>
using namespace std;
int fun (int x) {
int c=2*x;
printf("%d",c);
return 0;
}
int main() {
fun(5);
return 0;
}
注意,上面的函数并没有用到返回值功能。
2.2使用函数的返回值功能
实际开发中,一般不会在函数内部输入和输出,也就是一般不会在函数内部见到 scanf和printf。
实际上,函数的参数相当于输入,函数的返回值相当于输出。
那么函数的返回值应该如何使用呢?我们把上面的代码稍微一改,把c作为返回值返回看看。
#include<iostream>
#include<cstdio>
using namespace std;
int fun (int x) {
int c=2*x;
//printf("%d",c);
return c;
}
int main() {
fun(5);
return 0;
}
但是你执行上面代码后发现并没有任何东西输出,为什么呢,明明在上一步中能输出,这里调用之后就没有输出了呢。
实际上,函数确实是执行了,没有正常输出的主要原因是返回后没有东西去接返回值。像下面这样,用a这个变量去“接”函数返回的结果。这样后面加上printf,就可以正常输出了。
返回目录:C++