当前位置:首页 > C++目录 > 正文内容

【初级篇】函数(一)

亿万年的星光5年前 (2021-01-28)C++目录2877
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++中的sort函数详解

    【高级篇】C++中的sort函数详解

    0.简介sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#...

    unsigned

    在一些代码中,经常能看到unsigned这种数据类型,比如下面这样的。#include<iostream> using namespace std; int&nbs...

    第十四届全国青少年信息学奥林匹克联赛初赛试题(NOIP2008年普及组初赛C++试题及参考答案)

    第十四届全国青少年信息学奥林匹克联赛初赛试题(NOIP2008年普及组初赛C++试题及参考答案)

    第十四届全国青少年信息学奥林匹克联赛初赛试题             ...

    01背包问题

    问题定义01背包问题是一个经典的组合优化问题,通常描述如下:有个容量为C的背包有n件物品,第i件物品的重量为Wi,价值为Vi每种物品只有一件,可以选择放入背包(1)或不放入背包(0),因此称为“01”...

    混合背包

    1.问题定义:混合背包问题是经典背包问题的一个变种,其中物品的类型不单一,而是混合了以下三种类型:01 背包物品:每种物品最多只能选一次。完全背包物品:每种物品可以选择无限次。多重背包物品:每种物品有...

    【题解】小X玩游戏

    【题目描述】小X喜欢玩游戏。  这天,小X觉得传统的游戏都玩腻了,自己随手在草稿纸上画了一行N个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初...