关于c语言中函数的基本知识

⽬录

1. 函数的概念

2. 库函数

3. ⾃定义函数

4. 形参和实参

5. return语句

6. 嵌套调⽤和链式访问

1. 函数的概念

数学中我们其实就⻅过函数的概念,⽐如:⼀次函数 y = kx + b ,k和b都是常数,给⼀个任意的x,就得到⼀个y值。

其实在C语⾔也引⼊函数(function)的概念,有些翻译为:⼦程序,⼦程序这种翻译更加准确⼀些。C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。这段代码是有特殊的写法和调⽤⽅法的。

C语⾔的程序其实是由⽆数个⼩的函数组合⽽成的,也可以说:⼀个⼤的计算任务可以分解成若⼲个较⼩的函数(对应较⼩的任务)完成。同时⼀个函数如果能完成某项特定任务的话,这个函数也是可以复⽤的,提升了开发软件的效率。

在C语⾔中我们⼀般会⻅到两类函数:

• 库函数(自带的)

• ⾃定义函数 (自己手搓的)

2. 库函数

2.1 标准库和头⽂件

C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数;C语⾔的国际标准ANSI C规定了⼀些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列函数的实现。这些函数就被称为库函数。

我们前⾯内容中学到的 printf 、 scanf 都是库函数,库函数也是函数,不过这些函数已经是现成

的,我们只要学会就能直接使⽤了。有了库函数,⼀些常⻅的功能就不需要程序员⾃⼰实现了,⼀定程度提升了效率;同时库函数的质量和执⾏效率上都更有保证。

各种编译器的标准库中提供了⼀系列的库函数,这些库函数根据功能的划分,都在不同的头⽂件中进⾏了声明。

库函数相关头⽂件:https://zh.cppreference.com/w/c/header

有数学相关的,有字符串相关的,有⽇期相关的等,每⼀个头⽂件中都包含了,相关的函数和类型等信息,库函数的学习不⽤着急⼀次性全部学会,慢慢学习,各个击破就⾏

2.2 库函数的使⽤⽅法

库函数的学习和查看⼯具很多,⽐如:

C/C++官⽅的链接:https://zh.cppreference.com/w/c/header cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/

3.自定义函数

是因为库函数不能解决所有问题,于是程序员根据自己的需求来编写的。

3.1函数的语法形式

<1>返回类型

<2>函数名

<3>传递的参数

<4>函数体({}这部分里面的)

3.2函数的意义

函数就相当于一个加工厂,可以将数据打包、处理好,再由公司拿出来宣传。可以大大加快程序的进行,我们需要时调相应函数即可,方便我们平常的使用。

3.3函数的举例

这里函数就是Add, 该函数的作用就是将两个数相加求和。

4.实参和形参

4.1实参、形参的区别

4.3实参和形参的关系

我们在调试的时候可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。

5. return 语句

在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使⽤的注意事项。

• return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式的结果。

• return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。

• return语句执⾏后,函数就彻底返回,后边的代码不再执⾏。

• return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。

• 如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误。

• 函数的返回类型如果不写,编译器会默认函数的返回类型是int。

• 函数写了返回类型,但是函数中没有使⽤return返回值,那么函数的返回值是未知的。

6.1 嵌套调⽤

函数之间相互嵌套好似一台复杂的机器,但是功能也会变得很强大。正是因为有了这些嵌套,那些大型的程序才能得以实现。

这⼀段代码,完成了⼀个独⽴的功能。代码中反应了不少的函数调⽤:

• main 函数调⽤ scanf 、 printf 、 get_days_of_month

• get_days_of_month 函数调⽤ is_leap_year

未来的稍微⼤⼀些代码都是函数之间的嵌套调⽤,但是函数是不能嵌套定义的

6.2 链式访问

所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数的链式访问。

前⾯的代码完成动作写了2条语句,把如果把strlen的返回值直接作为printf函数的参数呢?这样就是⼀个链式访问的例⼦了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值