当前课程知识点:C语言程序设计(下) > 第一周:函数(一) > 1.3 函数调用、声明和返回 > 函数嵌套调用
我们已经知道了函数的调用
我们把它当做一种分享的乐趣
一个函数使用了另一个函数的功能
那么大家想象
函数能不能嵌套调用呢
大家看
我们管这种形式叫做函数的嵌套调用
主导函数中调用了被调函数a
被调函数a在运行过程中
又使用了被调函数b
被调函数b
在运行中
运行结束
将返回到
它的主调函数中调用它的位置
那么从屏幕上看
被调函数b返回到a中调用它的位置
然后继续后续的语句
函数a结束后
返回到主调函数中调用它的位置
继续执行
那么这个就是函数的嵌套调用的流程
我想现在我们通过一个例子
来看一下函数的嵌套调用
现在我们就来编写一个函数嵌套调用的程序
大家看
我们首先
连入标准输入输出头文件
在这个程序中
我们将用到三个被调函数
我们分别给它起名为
function1 function2 function3
在使用被调函数之前给它做个说明
这时候void大家知道 代表了无类型的
这三个函数都代表什么意思呢
我们下面做函数的定义
首先 使被调函数1
在被调函数1中
我们首先在屏幕上显示一下
现在
我在第一个函数中
大家可以想象
程序的流程运行到这的时候
屏幕上显示我现在是在执行第一个函数
接下来在函数1中
调用第二个函数 function2
第一个函数就这样
下面我们定义第二个函数
函数定义
定义首先函数名
接着在第二个函数中我们也要显示
现在我在第二个函数中
那么这句显示完了马上
就调用第三个函数
接下来第三个函数又做了什么事呢
第三个函数中
也显示一句那我现在在第三个函数中
这三个函数的功能
就是这样 总结一下
我们定义了三个功能函数
那么定义之前先对这三个函数作了说明
这样函数之间
就可以相互的调用
接下来我们来看主函数
主函数中我们首先要告诉用户
现在我在主函数中
大家都知道
每一个程序都是从主函数的运行开始
到主函数结束
主函数显示完这一句之后
调用了功能函数1
接下来最后还要以主函数结束
那现在我们也显示一下
我现在回到了主函数里
这一程序编完了
现在我们保存
大家知道
这程序的运行结果又是什么样呢
我们先来编译
改一个错
再编译
正确了
为了帮助大家来理解函数的嵌套
我现在使用跟踪的功能
请大家看
我在主函数中选择这一行做一个标记
接下来再重新编译
之后我选择debug调试
那么在这个调试功能中
我选择into function
也就是在程序的运行中
不断地点击这个键
那么程序的流程
执行到哪一行
大家就会看到这一行的不同的颜色的标记
注意看
现在程序运行到主函数中的这一行
提示我在主函数中
点击into function
执行这一句
说明上一句执行完了
我们可以通过结果来看
大家看
这一句i am in main function执行完了
接下来继续点击
进入到第一个函数中
将要执行我在第一个函数
再点击into function
上一句执行完了 我们再到屏幕上看
这一句执行完了
那么现在将要进入第二个函数
请看 点击进入第二个函数
将要执行我在第二个函数中
这条格式输出语句
进入第三个函数 再看
进入第三个函数之后结束的回到哪呢
大家思考一下
刚才说了
函数调用结束返回到调用它的那个函数
大家注意
是函数2调用它的
因此 执行完了之后
它应该返回到函数2
调用它的这条语句后继续执行
那么我们再看一下
这个屏幕的结果 大家看
第三个函数已经执行完了
那么第三个函数执行完
返回到第二个函数调用它的位置
再进一步的看
第二个函数执行完将会返回到第一个函数
调用它的位置
而第一个函数
运行结束之后
将会返回到主调函数
大家注意看
现在返回到了主函数中
我回到主函数了
这句暂时没有执行
进一步的 大家再看
现在回到了主函数了
那么程序运行结束
-1.1 函数定义
--内容简介
--函数是什么
--例题演示
--知识点总结
-1.1 函数定义--作业
-1.2 模块化程序设计
-1.3 函数调用、声明和返回
--函数调用的过程
--函数嵌套调用
-1.4 函数间参数传递
--形参与实参值传递
--小结
--html
-1.4 函数间参数传递--作业
-函数递归调用
--html
--html
--html
--html
--html
--html
-函数递归调用--作业
-3.1 变量存储属性
--开场
--局部变量全局变量
--存储类别小结
--html
--html
--html
--html
--html
-3.1 变量存储属性--作业
-3.2 编译预处理
--编译预处理开头
--编译预处理内容
--库函数
--函数总结
--综合例子
--html
-3.2 编译预处理--作业
-4.1 指针的定义、初始化和引用
--本周内容简介
-4.1 指针的定义、初始化和引用--作业
-4.2 指针与数组
--指针与数组
--Video
-4.2 指针与数组--作业
-5.1 指针与字符串
--本周开篇介绍
--指针与字符串
--指针与字符串小结
-5.1 指针与字符串--作业
-5.2 多维数组指针
--指针与多维数组
--html
--html
--html
--html
--html
--html
--html
--html
-5.2 多维数组指针--作业
-6.1指针与函数
--本周开篇介绍
--指针指向函数
--返回指针值的函数
--html
--html
--html
-6.1指针与函数--作业
-6.2指针与指针
--引入指针数组
--指针数组
--二级指针
--指针内容小结
--html
--html
--html
--html
-6.2指针与指针--作业
-7.1 结构的概念
--Video
--Video
--Video
--Video
--html
--html
-7.1 结构的概念--作业
-7.2 结构数组
--Video
--Video
--html
-7.2 结构数组--作业
-7.3 结构指针
--Video
--Video
--Video
--html
-7.3 结构指针--作业
-7.4 结构与函数
--Video
--html
-7.4 结构与函数--作业
-7.5 联合
--Video
--Video
--html
-7.5 联合--作业
-8.1 typedef自定义类型
--自定义类型
-8.1 typedef自定义类型--作业
-8.2 枚举类型
--枚举类型
-8.2 枚举类型--作业
-8.3 链表的概念
--为什么使用链表
--链表的定义和功能
-8.3 链表的概念--作业
-8.4 链表的基本操作
--创建链表的步骤
--创建链表的过程
--访问链表中的节点
--约瑟夫问题
--html
--html
-8.4 链表的基本操作--作业
-9.1 文件概述
--文件概念
--文件分类
-9.1 文件概述--作业
-9.2 文件型指针
--文件结构与指针
--设备文件
--html
-9.2 文件型指针--作业
-9.3 文件的打开与关闭
--文件读写方式
--文件读写操作
-9.3 文件的打开与关闭--作业
-9.4 文件的顺序读写
--字符串输入输出
--html
-9.4 文件的顺序读写--作业
-9.5 文件的随机读写
--文件随机读写
-9.5 文件的随机读写--作业
-9.6 文件检测
--文件检测
-9.6 文件检测--作业
-9.7 文件应用实例
--文件应用实例
--html
--html
-10.1 C语言知识总结
--程序调试概念
--软件测试方法
--程序跟踪调试
--C语言语法要点
--标识符及运算符
--程序设计流程
--数组、函数及指针
--结构和文件
-10.1 C语言知识总结--作业
-10.2 C语言练习
--程序设计方法
--图像合成例子
--html
-期末考试复习题
--html
-期末考试复习题答案
--html