C语言零基础入门—函数-01
本节课的任务是:
什么是函数。
怎样定义函数。
函数的简单调用。
一些小知识。
01 - 什么是函数
没有接触过编程的人看到函数这个词,可能会联想到我们数学中类似于:f(x)=ax^2+bx+c
的内容吧。
不错,这是数学中的函数,我们C语言中的函数与这个有着异曲同工之妙,并且可以不负责任地说:我接下来就是要从数学中的函数把大家引入到C语言的函数中去。
01.1 - 函数
我们回想一下数学中的函数:f(x)=ax^2+bx+c
的作用是什么呢?
是不是只要我们将任意一个数字传入函数
f(x)
中就可以得到一个计算结果,对不对?我们举个例子:将
x=3
传入函数f(x)=x^2+2x+3
,通过计算是不是可以得到:f(3)=18
。
C语言中的函数与这个作用也是类似的。
他的表面意思是:用来接受一些数据,然后将这些数据进行处理,之后在返回处理之后的结果。
真实存在的意义:
简洁性:写程序的时候,如果所有的程序都按照顺序罗列下来,那我们的这个程序文件是不是很乱,找某一个功能的时候是不是挺费劲的。
模块化:我们程序越写越多,那么肯定会有不同的地方需要实现相同的功能,如果我们把这个功能重复写,是不是很不合适吖,这个时候我们就可以这个功能给抽取出来,形成函数,每次只用调用一下这个功能就可以了。
功能意义先介绍到这里,接下来我们来介绍一下怎么使用C语言编写函数。
02 - 函数的定义
开始之前,需要记住一点就是:自定义的函数必须放在 main 函数外边,并且放在main函数的前边。至于为什么后边在说。
02.1 - 格式
返回值数据类型 函数名(参数数据类型 参数,参数数据类型 参数,……){ 函数体 返回语句}
函数名:就是为我们的函数起一个名字。这个必不可少。
返回值数据类型:也就是我们调用这个函数想要得到的结果 的数据类型。必不可少。
比如:我们想要传入两个参数3,4,到一个计算两个数之和的函数中,那么我们得到的结果是7,然而7是一个整形,所以这个函数的返回类型是
int
。有人问,如果我们这个函数的功能就是实现一个打印语句,那我们的返回类型怎么处理。如果没有返回的内容的话,就用
void
吖。见下面例子:
void dayin(){ ptintf("打印一下而已,没有可以返回的结果");}
函数体:就是我们这个函数具体的功能了。
参数数据类型以及参数:我们给函数传递数据的时候,要指定传递的数据的类型,并且用一个变量来存储这些数据。参数可以有多个,也可以没有。
返回语句:就是把我们计算得到的结果返回给 调用这个函数的语句。主要使用return
关键字。就拿刚才计算3+4的函数为例子:
如果看完定义有点晕,那就看看下边的例子。
02.2 - 例子:
1. 无参数,无返回值 的函数:
void Test()
{
printf("无参数也没有返回值的函数。");
}
定义了一个名为 Test 的函数,它的功能就是打印一句话。
他没有参数,所以他的
Test()
中的括号内为空。他没有返回值,所以返回的数据的类型为
void
,并且没有return
关键字。
2. 有参数,有返回值 的函数:
int Qiuhe(int x,int y)
{
int z = x + y;
return z;
}
定义了一个名为 Qiuhe 的函数(其实也就是“求和”的拼音),它的功能就是传入两个参数x,y然后得到这两个数的和。
他有参数:两个整形参数x,y放在括号内,多个参数的时候用逗号隔开。
他有返回值:由于计算得到的结果是整数,所以返回值数据类型为int,并且使用了
return
关键字,他就是把得到的结果z,返回给调用这个函数的语句。
03 - 函数的简单调用
我们既然定义了一个函数,那么我们的目的就是为了使用它,接下来我们讲一下函数的简单的调用。
03.1 - 调用的定义
大致上分为两类:
1,没有返回值的函数调用。
值得注意的是:自定义函数必须放在main函数的外边,并且是在main的前边,函数的调用放在main里边。
#include// 自定义函数的调用void Test(int x){ printf("你输入的数值是:%d\n",x);}void main(){ // 调用语句 Test(3);}
这个函数的功能就是传递一个整形数据,然后打印一下你传递的数值就行了。
我们可以看得出来无返回值的函数调用就是:写出函数名,并且在括号内写入正确的数据类型就好了。
2,有返回值的函数调用。
#include
// 自定义函数的调用
int Test(int x,int y){
int z = x + y;
return z;
}
void main(){
// 调用语句
int sum = Test(3,2);
printf("计算的结果是:%d\n",sum);
}
这个函数的功能就是传递两个整形数据,然后求和并且返回。
我们可以看得出来有返回值的函数调用就是:写出函数名,并且在括号内写入正确的数据类型,并且需要在函数的最前边写出求得的数据的类型以及变量名。
其实说白了有返回值的函数的调用就类似于变量的定义一样,只不过这个变量的值是通过一个函数得到的而已,我们类比:
int a = 3; // 数值直接得到int b = Test(3,4); // 数值通过函数得到
04 - 一些小知识
04.1 - 关于main
我之前给大家说过,程序的书写需要放在main中,并且main的定义可以是下边的两种方法:
#include// 第一种void main(){ }
#include// 第二种int main(){ return 0;}
之前我说过,大家记住第一种形式就可以了,具体为什么我们到函数在进行讲解,现在就来简单说一下吧。
因为main也是一个函数,因此他也是遵守我们前边的函数的定义的。
C语言中的代码都是从main函数开始执行的,因为main函数是C语言定义的一切代码的入口函数。我们自己定义的函数需要放在main函数外边,并且放在main的前边。因为程序编译的时候是从上往下进行编译的,只有先把自定义函数编译到,然后当从main种执行的时候才能找得到函数,否则找不到函数报错。
04.2 - 实参与形参
实参:也就是实际的参数。它指的是调用函数的时候传入的具体的真实的数据参数。
形参:也就是形式上的参数。它指的是具体的函数的括号内用于接收传递过来的数据的变量。
可能看的有点懵,具体看个例子:
#includeint Test(int x,int y){ int z = x + y; return z;}void main(){ int m=2; int n=3; int sum = Test(m,n); printf("计算的结果是:%d\n",sum);}
实参就是调用函数的时候,传入的参数m与n。
形参就是具体的函数Test中括号内,用于临时接收数据的x,y。
好了,这一节就先讲到这里.