1.前言
“函数”,相信我们大多数人听到它,首先想到的就是数学中变化莫测且令人头秃的xx函数。而C语言中同样引入了函数一词去命名同样具有举足轻重地位的模块。函数,我们可以将之理解为子程序。其本质上就是一段完成特定任务,实现特定功能的代码。只不过这段代码是拥有特殊的写法和调用方法。而在C语言一般会见到两类函数——库函数,自定义函数。下面请听我逐一道来。
2.库函数
2.1 标准库和头文件
2.2库函数的使用方法
我们以pow函数举例:
首先使用工具查找函数pow
① 函数名前的double是函数返回值类型,表示函数计算的结果是double类型的值。 ② x,y是函数的参数,表示调用pow函数时需要传递两个double类型的值。 ③ <math.h>是声明pow的头文件,使用时务必包含,否则会出现出现问题。
我们再来写代码:
#include<stdio.h>
#include<math.h>//记得包含头文件
int main()
{
double x = 2.0;
double y = 3.0;
double ret=pow(x, y);//用ret接收pow的返回值
printf ("%lf", ret);//打印返回值
return 0;
}
最后顺利输出。怎么样?是不是感觉挺容易的。那么请利用好你的“工具箱”吧!
3.自定义函数
3.1 函数的语法形式
自定义函数与库函数的形式类似:
3.2代码举例
下面我们直接动手实操
int sub(int i, int j)//函数返回值类型和参数类型为int
{
int c = i - j;
return c;//返回int类型变量c的值
}
int main()
{
int a = 3;
int b = 4;
int ret=sub(a, b);//调用sub函数,传递实参a,b
printf("%d", ret);//打印sub函数返回值
return 0;
}
函数的几大要素:函数名,返回值类型,参数类型等,需要我们交代清楚。 上⾯只是⼀个例⼦,未来我们是根据实际需要来设计函数,函数名、参数、返回类型的
4.形参和实参
4.1形参和实参的定义
①形参:为什么叫形式参数呢?以3.2中的sub函数举例。如果仅定义了sub函数,而不去调用的话, 该函数的参数a 和 b 只是形式上存在的,不会向内存申请空间,并 没有真实存在,所以叫形式参数。形式参数只有在函数被调用的过程中为了存放实参传递过来的值,才向内存申请空间。这个过程就是形式参数的实例化。
②实参:在我们调用sub函数时,传递的a,b被称为实际参数。实际参数就是真实传递给函数的参数。
4.2形参和实参的关系
形参是实参的一份临时拷贝。 ①为什么是临时?因为当我们调用完函数后,我们为使用函数而开辟的空间将会释放给内存,即调用完后形参将不复存在。 ②为什么是拷贝?因为形参和实参的地址不同,所以本质上它们是两个不同的变量,而我的形参只是把我的实参复制一遍,只是数值相同而已。
口说无凭,以3.2的代码为例,我们来看看调试的结果:
我们发现虽然a和i,b和j的值相同,但是它们的地址并不一样,所以形参是实参的一份临时拷贝。
5.return 语句
6.总结
今天我们浅扒了下库函数,自定义函数,实参和形参等。但最重要的还是要熟练掌握自定义函数,让我们今后的代码更具魅力! To be continue......