当前位置:首页 > C++知识 > 正文内容

【初级篇】函数(一)

亿万年的星光4年前 (2021-01-28)C++知识1846
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,就可以正常输出了。


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【数据结构】栈的基本操作

0.前言上一篇中简单介绍了栈的定义,这一篇中介绍栈的基本用法,包含压栈,出栈,判断栈空,判断栈中元素个数等。下面进行详细介绍1.基本用法本文介绍的栈的主要操作,使用栈之前加入<stack>...

CSP-J2021年普及组复赛T4——小熊的果篮

【题目描述】    小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依 次用正整数 1、2、3、……、n 编号。连续排在一起的同一种...

信息学奥赛中文件流的写法

信息学奥赛中文件流的写法

头文件#include<cstdio>也可以用万能头格式如下:int main(){ freopen("xxxx.in","r",st...

C++ 如何隐藏光标

在C++控制台做小游戏的时候,光标一直在闪,影响体验效果,我们可以通过下面的函数隐藏光标位置。void HideCursor(){ CONSOLE_CURSOR_INFO cu...

【入门篇】C++ 中变量的简单使用

【入门篇】C++ 中变量的简单使用

1.什么是变量”变量“通俗来讲就是能变的量。在程序设计中,变量是一个个不同类型的盒子,当盒子里装了苹果时,盒子就代表苹果,当然,我们需要给一个个盒子起不同的名字。像下面的图片一样,一个盒子,给他取一个...

【数据结构】并查集2

【数据结构】并查集2

上一篇文章,简单介绍了并查集。这篇文章,介绍一下并查集的改进以及优化。find函数的优化(路径压缩)因为并查集的merge操作:void merge(int a, int...