函数的简介
我们从小学习数学,相信大家都听过一个词叫做函数,在我们的印象里面函数就是类似于f(x) = 2x+y这样的式子,那么在我们C语言中也有对函数的定义,并且我们每天都在使用。用我们的百度查询C语言函数的定义,给出我们的答案是,C语言函数是一种函数,用来编译C语言。而在维基百科中是这样定义的,他们将函数定义为子程序
1.在计算机科学当中,子程序,是一个大型程序中的某一部分代码,有一个或者多个语句块组成。它负责完成某项特定的任务,而且相较于其他代码,具备相对的独立性。
2.一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被即成为软件库。
关于函数的定义我们在之后的讲解中会带领大家细细品味。
C语言中函数的分类
库函数
我们知道,在我们写代码时经常会用到一些功能,例如:输入、输出、拷贝、计算等功能,这些功能都是基础功能,是非业务性代码,如果这样的代码还需要让程序员自己定义,会增加代码出bug的风险,也会降低代码的可移植性,所以C语言的编译器提供了一些函数,这些函数我们称为库函数。库函数的使用增加了代码的可移植性和开发的效率,方便程序员的开发。
C语言就库函数的标准做了一些工作,他定义了库函数的函数名、功能、参数、返回类型。但是如何实现C语言没有给出定义,如何实现是编译器厂商实现的。
#include<stdio.h>
int main()
{
int a = 0;
printf("%d", a);
return 0;
}
上图代码我们使用了printf()
库函数,我们仅仅是使用他,如何实现,怎么实现的我们并不知道。这就是函数定义当中说的对代码的封装和细节的隐藏。向这样的库函数还有很多,难道我们都要把他记住嘛,其实不是,我们说授人与鱼不如授人与渔,所以这里我们要跟大家分享的不是库函数,而是如何学习库函数。
如何学习库函数
www.cplusplus.com 这个网站可以帮助我们学习库函数相关的知识。
如图打开这个网站,我们查找printf()
库函数,我们看见与这个库函数的相关知识都为我们展示了出来,使用时引用什么头文件,返回值类型,和参数类型,具体的功能都为我们展示了出来,所以当我们以后遇到了不会用不了解的库函数,我们可以通过查阅来自行学习。
我们来带领大家查询一下库函数strcpy()
,展示一下如何自主学习库函数。
首先我们打开网站,输入stecpy()
进行查找这个库函数
我们可以最先看到的就是绿色字体交代了strcpy()
库函数的返回类型和参数类型,以及下面的对与这个库函数功能的介绍,大致意思就是字符串的拷贝,将一个字符串从源头拷贝到目的地去,下面的Parameters是形式参数的意思,Return Value是返回值的介绍,之后就是在代码中举例演示,了解了上面这些我们可以自己在代码中尝试使用一下这个库函数。
int main()
{
char arr1[] = "";
char arr2[] = "hello";
strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
当我们写出这个代码并执行的时候,发现报错了,如下图,出现这种错误的原因就是使用库函数没用引用头文件,我们在返回网站学习,发现使用库函数strcpy()
时一定要引用头文件#include<string.h>
。
#include<string.h>
int main()
{
char arr1[20] = "XXXXXXXXXXXXX";
char arr2[] = "hello";
strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
再次执行我就得到了这样的结果,这样一个库函数的大致用法我们就掌握了,在以后的学习中,使用的都是这样的方法。
库函数的分类和注意事项
在C语言中常用的库函数都有:
IO函数(input,output)
字符串操作函数
字符操作函数
内存操作函数
时间/日期函数
数学函数
其他库函数
值得注意的是,当我们在使用库函数时,必须包含头文件#include
对应的头文件例如我们在使用printf()
库函数时我们需要引用头文件#include<stdio.h>
。
自定义函数
当然了在我们的C语言当中不只有库函数,不然我们程序员存在的意义是什么呢?所以更加重要的就是自定义函数。自定义函数和库函数一样,有函数名,返回值类型,和函数参数。但不一样的是这些都是由我们自己设计的。我们在代码中给大家介绍一下函数的组成:
int sum(int a)
{
a = 1;
return a;
}
sum
我们称为函数名,int
称为返回值类型,int a
我们称为函数参数,大括号里面的内容我们称为语句项。给大家举个例子吧:我们写一个函数找出两个整数的最大值:
#include<stdio.h>
int get_max(int x, int y)
{
if (x > y)
{
return x;
}
else
{
return y;
}
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("%d", max);
}
如图我们就使用函数,实现了求解两个数中的较大数的输出,使用函数的好处是,一行代码可以多次使用,增加了代码的复用性。当然我们也可以简化一下函数里面的函数体
#include<stdio.h>
int get_max(int x, int y)
{
return x > y? x : y;
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("%d", max);
}
这样同样可以实现,其实函数就像时一个工厂一样,原材料交给工厂,经过工厂的加工最后返还给产品,我们将num1 num2 交给函数,函数最后返回最大值,是不是有异曲同工之妙,这样是不是更好理解函数的作用了。