c语言复习--函数

在前面的复习中我们复习了数据类型、变量常量、字符串转义字符、循环语句选择语句、函数、数组、操作符(十类)、关键字、指针、结构体等c语言整体框架,以及循环选择语句的精学,下面我们开始函数这一章的重点回顾。

函数简单来说就是一个功能模块,分为库函数和自定义函数,其中自定义函数的声明、定义以及使用比较重要,库函数只需直到并会阅读文档并会使用即可。

自定义函数的声明通常放在头文件中,定义通常单独生成一个.c文件去定义,再在主函数中引用头文件就可以使用这个函数,函数在调用时有传值调用和传址调用,这就要在使用函数之前去推演函数的功能,如果一个函数需要改变主函数中某个变量的值,那就需要传递这个变量的地址进入函数,如果不需要仅仅需要数值的复制,那就可以传值调用。函数的参数分为实参和形参,实参是函数调用的时候传入的真正的参数,而形参是函数中用来接收实参的变量,实际上就是实参的一份临时拷贝。

函数本身没什么难点,重点在于扩展的函数的递归,这里主要是递归,一想到递归就会想到二叉树,这部分的学习会给递归有深刻的印象

递归:将大问题化小的解决问题的思路,代码通常很简短。

递归我们要想的是将大问题化小,并在最后找出递归终止的条件,还有先序遍历、中序遍历以及后序遍历,即什么时候要干什么事情,了解递归的本质就是在栈区内不停的创建函数栈帧,可以利用栈帧的模拟图像来理解递归程序。

在这里举例:例如计算一个字符串(asdfgh)的长度的问题,就可以化为计算(sdfgh)的长度最后再+1,一直推演到计算(h\0)的长度是(\0)的长度+1,(\0)返回0,这就是递归的终止条件,从这里开始创建好的栈帧依次销毁,最后得sdfgh)的长度是5,最后返回5+1

有一个汉诺塔问题比较经典,这个问题也是将大问题化小的思路,比如有四个盘子,首先要将三个盘子从A,经过C移到B,再将剩余的那一个从A移到C,最后将在B的三个盘子从B经过A拿到C

首先要将三个盘子从A,经过C移到B的过程可以化为:首先要将2个盘子从A经过B拿到C,再将剩余的那一个从A拿到B,最后将再C的两个盘子从C经过B拿到C

剩下的以此类推这个问题就可以解决,做题时要细心观察,善于总结相同点,汉诺塔这个题还要注意函数的后三个参数一定是字符类型的变量来接收实参,其余细节方面自己也一定要想到位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-hhY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值