C语言函数(上)

1.前言

  “函数”,相信我们大多数人听到它,首先想到的就是数学中变化莫测且令人头秃的xx函数。而C语言中同样引入了函数一词去命名同样具有举足轻重地位的模块。函数,我们可以将之理解为子程序。其本质上就是一段完成特定任务,实现特定功能的代码。只不过这段代码是拥有特殊的写法和调用方法。而在C语言一般会见到两类函数——库函数自定义函数。下面请听我逐一道来。

 2.库函数

2.1 标准库和头文件

  C语⾔标准中只规定了C语⾔的各种语法规则,并没有提供库函数。 C语⾔的国际标准ANSI规定了⼀ 些常用的函数的标准,被称为标准库 。不同的编译器⼚商便根据ANSI提供的C语⾔标准给出了⼀系列函数的实现,这些函数就被称为库函数。我们初学时常常用到的 printf 、 scanf 等都是库函数。简单来说,库函数就是一些 公认的现成的我们可以直接拿来使用的函数 。有了库函数,⼀些常见的功能就不需要程序员自己实现了。实现了效率和品质的双重保证。
   头文件是一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明。  各种编译器的标准库中提供了的一系列库函数根据功能划分,都在不同的头文件中进行了声明。
  库函数就像一个工具箱, 需要时,我们只需要根据功能找到对应的“工具”来使用即可 ,无需刻意去学习。
  库函数相关头⽂件:https://zh.cppreference.com/w/c/header 
库函数使用和查找工具:

  

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 函数的语法形式

自定义函数与库函数的形式类似:

 ① ret_type 是用来表示函数数计算结果的类型,返回类型是void时,表示无返回值。
 ② fun_name 是函数名,函数名尽量要与函数的功能有一定联系,方便阅读。
 ③ 函数定义时的参数叫形式参数,简称形参。函数的参数也可以是 void ,明确表示函数没有参
数。如果有参数,要交代清楚参数的类型和名字,如(int x,int y)。
 ④ 大括号括起来的部分被称为函数体,函数体就函数计算的整个过程。

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 语句

      在函数的设计时,函数中经常会出现return语句,这里提⼀下return语句使用的注意事项。
① return后边可以是⼀个数值,也可以是⼀个表达式,如 果是表达式则先执行表达式,再返回表达式 的结果。 比如,3.2中函数的返回值也可以写成 return i-j;
② return后边也可以什么都没有,直接写 return; 这种写法 适合函数返回类型是void的情况。
③return返回的值和函数返回类型不⼀致时, 系统会自动将返回的值隐式转换为函数的返回类型
④return语句相当于程序的出口, 执行后,函数就彻底返回, 后边的代码便不再执行。
⑤如果函数中存在if等分支的语句, 则要保证每种情况下都有return返回, 否则会出现编译错误。

 

6.总结 

   今天我们浅扒了下库函数,自定义函数,实参和形参等。但最重要的还是要熟练掌握自定义函数,让我们今后的代码更具魅力! To be continue......

springboot034基于Springboot+Vue在线商城系统设计与开发毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值