返回介绍

4.3.1 函数的嵌套调用

发布于 2025-04-11 22:32:55 字数 1828 浏览 0 评论 0 收藏 0

前面讲过,C 语言中函数是不能嵌套定义的,但函数是可以嵌套调用的。所谓函数的嵌套调用,就是在一个函数的函数体中又出现了函数调用语句。简单说,就是函数又调用了函数。其实前面所有的案例都使用了函数的嵌套调用,包括第一个 C 语言程序(在主函数中又调用了 printf 函数),虽然这两个函数有点特殊,一个是主函数,一个是库函数。

下面就用自定义函数来展示一下函数的嵌套调用,并从中厘清函数嵌套调用时程序的执行流程。

首先定义一个函数 A,在函数体中使用两条 printf 函数分别打印开始和结束函数 A 的提示信息。

再定义一个函数 B,同样在函数体中使用 printf 函数分别打印开始和结束函数 B 的提示信息,在两条 printf 函数调用语句之间再加入一条对函数 A 的调用语句。

最后在主函数中,也是使用 printf 函数分别打印开始和结束主函数的提示信息,在两条 printf 函数调用语句之间再加入一条对函数 B 的调用语句。

保存源文件,编译生成可执行文件,执行后运行结果如下:

Start main function.
Start function B.
Start function A.
End function A.
End function B.
End main function.

从打印输出的结果,可以清晰看出程序的执行流程:程序运行后,程序的执行流程首先执行主函数,在函数体中的第一条语句是 printf 函数调用语句,它会在窗口上打印输出“Start main function.”,第二条语句是函数 B 调用语句,这会让程序的执行流程转到函数 B 中,在函数 B 的函数体中,首先通过 printf 函数调用语句,在窗口上打印输出“Start function B.”,然后又执行了对函数 A 调用的语句,此时程序流程又会转到函数 A 中,在函数 A 的函数体中,通过两条 printf 函数调用语句分别打印“Start function A.”和“End function A.”,这时函数 A 执行完毕,程序流程回退到当初调用函数 A 的地方,即函数 B 中的第二条语句,然后接着向下执行,通过 printf 函数调用语句打印输出“End function B.”,这时函数 B 也执行完毕,程序流程再次回退到当初调用函数 B 的地方,即主函数中的第二条语句,接着向下执行,通过 printf 函数调用语句打印输出“End main function.”。最后通过 return 语句返回一个 0 给系统,结束整个程序。

如图 4.5 所示,虚线箭头指示程序的实际执行流程。

图 4.5 程序执行流程箭头指示图

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。