1.函数是什么?
2.函数的分类 库函数 要求有会掌握一些库函数的模拟实现,及查询库函数的功能和头文件的能力
自定义函数 要求会根据题目要求自己自定义一些函数
从本案例中可以看出,传值调用并不能改变实参的值,而传址调用是可以改变实参的值。
3.函数的实参和形参:形参是实参临时拷贝
具体有关实参和形参在空间中的开辟,详情请见后续博客推出的函数栈帧相关的内容。
4.函数的传值调用和传址调用:传值调用并不能改变实参的值,而传址调用是可以改变实参的值。
相关练习:
习题1:
习题2:
习题3:
习题4:
5.函数的嵌套调用和链式访问
函数可以互相调用,也即是嵌套调用。
但是函数不能嵌套定义。
函数的链式访问
strlen函数的返回值做printf函数的参数,像这样就叫做函数的链式访问。
相关习题讲解:
在讲解之前,要注意一点,printf函数的返回值是打印字符的个数。
最里层的printf函数打印出43,返回值为2,作为第二个printf函数的参数。
第二个printf函数打印出2,返回值1,作为第一个printf函数的参数。
第一个printf函数再打印出1。
6.函数的声明和定义
函数的声明:
函数的定义:
指函数的具体实现,交待函数的功能实现。
7.函数递归和迭代(非递归)
存在递归的两个条件:1.存在条件限制,满足限制条件,就不再发生递归 2.条件变量会发生改变,每次调用递归时会越来越接近限制条件
//习题
1.//接受一个整型值(无符号),按照顺序打印它的每一位。
//例如:
//输入:1234,输出 1 2 3 4
2.//编写函数不允许创建临时变量,求字符串的长度。
3.//求n的阶乘。(不考虑溢出)
递归实现:
迭代实现:
4.//求第n个斐波那契数。(不考虑溢出)
递归实现:
迭代实现:
![](https://i-blog.csdnimg.cn/blog_migrate/64b1ef8a96256bd0f13448437d3760d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/36cb9aa4f77de086873e7391e39b23a8.png)
思路一:找规律
一阶台阶方法一种
两阶台阶方法两种
三阶台阶方法三种
四阶台阶方法五种
五阶台阶方法八种
六阶台阶方法十三种
类似于斐波那契数列