目录
1.函数的嵌套调用和链式访问
2.函数的声明和定义
3.函数递归
1.函数的嵌套调用和链式访问
(1)嵌套调用
函数可以嵌套调用,但是不能嵌套定义。
(2)链式访问
把一个函数的返回值作为另外一个函数的参数。
如:
![](https://i-blog.csdnimg.cn/blog_migrate/9c3f026567a7a9bde0664c5a90ae59a6.png)
注:printf函数的返回值是打印在屏幕上字符的个数2.
![](https://i-blog.csdnimg.cn/blog_migrate/615a1b448206ffa8c432e483f5abf7aa.png)
2. 函数的声明和定义
(1)函数声明:
<1> 告诉编译器有一个函数叫什么,参数是什么,
返回类型是什么。但是具体是不是存在,函数
声明决定不了。
<2>函数的声明一般出现在函数的使用之前。要满足
先声明后使用。
<3>函数的声明一般要放在头文件中的。
(2)函数定义
函数的定义是指函数的具体实现,交待函数的功能实现。
<1>test.h
的内容
放置函数的声明
#ifndef __TEST_H__
#define __TEST_H__
//
函数的声明
int
Add
(
int
x
,
int
y
);
#endif
//__TEST_H__
<2>test.c
的内容
放置函数的实现
#include "test.h"
//
函数
Add
的实现
int
Add
(
int
x
,
int
y
)
{
return
x
+
y
;
}
3.
函数递归
(1)
什么是递归
程序调用自身的编程技巧称为递归(
recursion
)。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接
调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归策略
只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
(2)递归的两个必要条件
存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。
例:
编写函数不允许创建临时变量,求字符串的长度。
![](https://i-blog.csdnimg.cn/blog_migrate/0ace9d58390a0f0fa6172ab98e977f4c.png)
例:
接受一个整型值(无符号),按照顺序打印它的每一位。
例如:
输入:
1234
,输出
1 2 3 4
![](https://i-blog.csdnimg.cn/blog_migrate/5f90a7a98180ba15c7fd30aecf3fdef9.png)