1.函数的概念
在数学中我们学习过如一次函数;二次函数等,其实在C语言中也引入了函数(function)的概念
C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。
有些也将function翻译为⼦程序,子程序这种翻译更加准确⼀些。
C语言的程序其实是由无数个小的函数组合而成的,且⼀个函数如果能完成某项特定任务的话,这个函数也是可以复用的,提升了开发软件的效率。
在c语言中我们一般会用到两种函数:
1.库函数
2.自定义函数
2.库函数
1.库函数是什么
在C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数;C语言的国际标准ANSI C规定了⼀些常用的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语言标准就给出了⼀系列函数的实现。这些函数就被称为库函数
有了库函数一些常用的功能就不需要我们自己去编写了,可以直接引用库函数,从而提升编写代码的效率,还能保住代码的质量 在使用库函数时需要引用相应的头文件,这些库函数根据功能的划分,都在不同的头文件中进行了声明。
相关头文件:https://zh.cppreference.com/w/c/header
2.库函数的学习查找工具
C/C++官方的链接:https://zh.cppreference.com/w/c/header
cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/
3.自定义函数
库函数很重要但在c语言中更重要的是自定义函数,有了自定义函数我们才能写出不一样的代码,让我们更具有创造性。
1.函数的语法形式
自定义函数的形式如下:
ret_type fun_name(形式参数) { }
在自定义函数中当无需返回值时,返回类型就是void,当参数数量为零时,形参部分可以是void也可以在括号内不放任何值
2.自定义函数的作用
我们可以把函数想象成小型的⼀个加工厂,工厂得输入原材料,经过工厂加工才能生产出产品,那函数也是一样的,函数⼀般会输入一些值,这些值也就是参数(可以是0个,也可以是多个),经过函数内的计算,得出结果。
3.函数举例
如果我们要设计一个函数来实现两个整形变量加法的功能,在这个函数内就有两个整形变量,后实现相加功能,最后返回相加的值
首先将主函数部分代码实现出来
#include int main() { int a=0; int b=0; scanf("%d %d",a,b); int sum=Add(a,b); printf("%d",sum); return 0; }
在主函数传两个参数给Add函数 ,函数Add需要接收2个整型类型的参数
在该函数头部分由于是整形变量的,且返回值也是一个整形,所以函数同如下
int Add(int x,int y)
在主函数传两个参数给Add函数 ,函数Add需要接收2个整型类型的参数
所以我们根据上述的分析写出函数:
Add(int x,int y) { int z=x+y; return z; }
4.形参与实参
在函数使⽤的过程中,把函数的参数分为,实参和形参。
在调用函数时候真实传递给函数的参数叫做实际参数,简称实参
在上面的加法函数中但没有调用Add函数时,Add函数内的x与y没有创建空间,这时x与y只是形式上的存在,所以我们将函数名后面定义的参数叫做形式参数,简称形参
只有但Add函数被调用的时候内存才会为参数x和y分配空间,这个过程就是形参的实例化
形参与实参的关系
在以上代码中我们通过调试来感受形参与实参的关系
通过以上调试可以看到实参a,b与形参x,y的地址是不同的,说明形参与实参的存储空间不同,形参只是将实参的内容拷贝过来了,所以我们可以理解为形参是实参的一份临时拷贝
5.return 语句
在函数设计过程中经常用到return语句,而在使用return语句时有一些事项要注意
1.后边可以是⼀个数值,也可以是⼀个表达式,如果return语句后是一个表达式,则先执行表达式,再返回表达式的结果
在以上的加法函数Add中可以简化为
在以上return语句后就会先执行x+y,再返回相加的值
2. return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况,return语句执行后,函数就彻底返回,后边的代码不再执行
#include void test(int x) { if(x>5) return; printf("yes"); } int main() { int a=0; scanf("%d",&a); test(a); return 0; }
若要使输入的值大于5时就不会打印yes,就可以在printf前在x>5时使用return
3. return返回的值和函数返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型
#include int test(float x) { return x/2; } int main() { float a=0; scanf("%f",&a); int b=test(a); printf("%d",b); return 0; }
如在以上代码中在test函数内x/2的结果是浮点型,但test函数的返回类型是整形,这时编译器就会自动将返回的浮点形数转化为整形数
4.如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误

如在以上代码中在test函数内使用了if语句,在i>5时return1,但在i