目录
前言
本章我们来学习一下C语言中的函数,我们将从函数概念、函数类型、函数使用三个大部分来诠释
其中函数使用部分包含(形参和实参 return语句 数组做函数参数 嵌套调⽤和链式访问 )几个要素,话不多说,下面就让我们一起来学习
一、函数概念
C语⾔中的函数就是指完成某项特定的任务的⼀⼩段代码,有些翻译也将其命名为子程序
因为其具有“完成某项特定任务”的属性,所以我们可以将函数当成一个工具来看待,通过在主程序中调用函数来达到解决问题的目的,并且函数可以重复使用,这大大提高了我们的开发效率
二、函数分类
库函数
(1)标准库
C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数
C语⾔的国际标准ANSIC规定了⼀些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列
函数的实现
这些函数就被称为库函数
简而言之C语言中规定了函数使用标准,在这个标准下使用的函数被称为库函数
(2)头文件
库函数是在标准库中对应的头⽂件中声明的,所以库函数的使⽤,务必包含对应的头⽂件,不包含是可能会出现⼀些问题的
(3)示例
举例:sqrt
double sqrt (double x);
//sqrt
是函数名
//x
是函数的参数,表⽰调⽤
sqrt
函数需要传递⼀个
double
类型的值
//double
是返回值类型
-
表⽰函数计算的结果是
double
类型的值
自定义函数
下面我们来了解一下自定义函数,自定义函数即除库函数以外的由我们自己创建的函数类型
写⼀个加法函数,完成2个整型变量的加法操作:
#include <stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x+y;
return z;
}
int main()
{
int a = 0;
int b = 0;
//输⼊
scanf("%d %d", &a, &b);
//调⽤加法函数,完成
a和b的相加
//求和的结果放在r中
int r = Add(a, b);
//输出
printf("%d\n", r);
return 0;
}
函数的参数部分需要交代清楚:参数个数,每个参数的类型是啥,形参的名字叫啥
三、函数使用
1、实参与形参
实参就是我们在函数调用过程中实际给函数传递的参数
形参则是放在函数名后的括号内,用来接收从实参传递过来的值的参数,形参只是在形式上存在,不会向内存申请空间,不是真实存在的,只有在接收值之后才会申请空间
注意:形参和实参各自独立占用内存空间,因此我们可以理解为形参是实参的一份临时拷贝
2、return语句
在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使⽤的注意事项
• return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达 式 的结果
• return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况
• return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型
• return语句执行后,函数就彻底返回,后边的代码不再执行
• 如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误
3、数组做函数参数
数组传参的⼏个重点知识
• 函数的形式参数要和函数的实参个数匹配
• 函数的实参是数组,形参也是可以写成数组形式的
• 形参如果是⼀维数组,数组⼤⼩可以省略不写
• 形参如果是⼆维数组,⾏可以省略,但是列不能省略
• 数组传参,形参是不会创建新的数组的
• 形参操作的数组和实参的数组是同⼀个数组
4、嵌套调⽤和链式访问
(1)嵌套调用
嵌套调⽤就是函数之间的互相调⽤,每个函数就⾏⼀个乐⾼零件,正是因为多个乐⾼的零件互相⽆缝 的配合才能搭建出精美的乐⾼玩具,也正是因为函数之间有效的互相调⽤,最后写出来了相对⼤型的 程序
未来的稍微⼤⼀些代码都是函数之间的嵌套调⽤,但是函数是不能嵌套定义的
(2)链式访问
所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数的链式访问
一个有趣的代码:
#include <stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 43)));
return 0;
}
printf函数返回的是打印在屏幕上的字符的个数
上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个 printf的返回值
第三个printf打印43,在屏幕上打印2个字符,再返回2 第⼆个printf打印2,在屏幕上打印1个字符,再放回1 第⼀个printf打印1
所以屏幕上最终打印:4321
本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~