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++


分类: 开发与创造