<函数初阶>看这篇就够了!


前言

在C语言中,函数是重要的组成部分,几乎每次编辑代码都会用到函数,本篇将尽可能详细向你介绍关于初阶函数你需要掌握的知识。


提示:本人目前还是IT萌新,小菜鸟一只,如有欠佳之处还请大佬多多指点,抱拳!以下是本篇文章正文内容,下面案例可供参考

一、函数是什么?

在这里插入图片描述

在这里给大家推荐一个网站:https://cplusplus.com ,可以在这个网站上查询库函数的使用方法。

二、函数实现引例

1.判断素数

在这里插入图片描述

2.判断闰年

在这里插入图片描述

3.二分查找

在这里插入图片描述下面举例要在这个数组中查找“7”这个数
在这里插入图片描述

三、函数的使用

1.函数的递归

1.相关知识点+引例1

在这里插入图片描述
在这里插入图片描述

2.引例2——顺次打印字符(三种方法)

上述是用递归的方式,对一个多位数顺次打印每一位上的数字,下面用三种方式实现顺次打印一个字符串的每一个字符:
1、创建了临时变量计数
2、不创建临时变量—递归
3、不创建临时变量—指针减指针(拓展)

在这里插入图片描述

看到这里小伙伴们应该大致理解了<函数递归>的核心就是“大事化小”,只要是一个问题可以把复杂的问题(在原理相同的前提下)简单化,似乎使用函数递归也没有那么难!

细心的小伙伴可能已经发现了,这个递归,怎么那么像循环语句呢?
其实递归就是循环的一种。

那小伙伴们此时应该就有疑问了:
“这个递归函数和for循环有什么区别呢?”
“递归函数和for循环我该使用哪一个呢?”

别着急 往下看!

3.引例3——斐波那契数列

下面用两种方法实现斐波那契数列:
1、递归
2、for循环

在这里插入图片描述
在这里插入图片描述
所以,递归也是有缺陷的,有些情况下尽管可以使用递归解决,但并不合适。

并且递归能干的事情,for循环可以干,但for循环可以干的事情,递归不一定能干,需要随着对代码的理解,视情况而定使用哪一种方式解决问题。

而递归的牛X之处就在于:合适的情况下可以用极少的代码解决问题。

2.函数的嵌套调用

在这里插入图片描述

3.函数的链式访问

下面举三个栗子为大家介绍函数的链式访问~
在这里插入图片描述

这里埋一个铺垫:

这个函数的返回值是char*,请大家思考:为什么呢? 明明是复制字符串,为什么还需要返回值呢?

如果小伙伴们琢磨不出来可以关注作者 我会在下一篇文章《函数进阶介绍》里给出答案~

4.回调函数

回调函数是指:将一个函数(A)作为另一个函数(B)的参数,通过这种方式在函数B中调用函数A。
那么函数B的实参就是函数A的地址,函数B的形参就是一个函数指针,这个指针指向函数A。

这里涉及到<指针进阶>部分的知识点,这里我就不放代码啦~

为了方便大家将知识联系起来,建立完整的知识链,我会在后续更新《指针初阶》和《指针进阶》两篇文章。在《指针进阶》里面会给大家分享一个回调函数的例子
感兴趣的小伙伴可以蹲一手!

已经更新啦!在这里噢!

5.小结

区分上述四种函数使用方式:
函数的递归就是自己调用自己;函数的嵌套就是自己调用别人,
函数的链式访问是另一个函数的返回值作为函数参数;函数的回调是另一个函数的地址作为函数参数。

四、函数的声明和定义

不知道小伙伴们发现了没有,上述所有的代码,我的函数总是放在main函数的上面,我为什么有这样的习惯呢,这就要说到函数的声明和定义了。

函数的声明:
     1告诉编译器,我自己写了一个函数,叫什么名字,参数是什么,返回类型是什么,但具体什么时候用这个函数,这个函数用或不用,不重要。
     2.函数的声明一般在函数使用之前。
     3.函数的声明一般放在头文件中。(平时我们练习小块的代码一般不需要自己创建头文件,但如果我们写稍微复杂一些的代码,就需要自己创建头文件,以及不止一个的源文件。)
     
函数的定义:
     就是函数实现的具体实现,交代函数的功能。
     
如果我把main函数放在上面当编译器从上到下编译的时候,就不知道在main函数里的自定义函数是什么,所以就会报错。
解决方法就是先声明再使用
在这里插入图片描述

总结

以上就是今天要讲的关于<函数初阶>的内容,本文仅仅简单介绍了<函数初阶>部分的使用,而<函数>相关知识还不止这些,如果大家喜欢我的文章,请点赞关注支持一下!(手写真的很费时间)后面我会给大家带来<函数进阶>部分的内容。

哦对了,如有欠佳之处欢迎各位兄弟姐妹们指点!抱拳x2!

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵魂相契的树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值