从被调函数返回调用函数的一般步骤-数据结构C语言版严蔚敏PPT

从被调函数返回调用函数的步骤讲得挺清楚的,用的是严蔚敏的 C 语言版 PPT 内容,老教材了,但讲原理一点不落后,适合打基础的同学。嗯,整个过程其实就是模拟函数调用栈的出栈逻辑,照着栈顶一步步还原调用现场,有助于你理解递归怎么回事。

栈结构的函数调用返回流程,还原参数、局部变量、返回地址这些操作,其实就是恢复“上一个函数”的上下文。像递归或者函数嵌套调用时,靠这个过程把逻辑接上。你要是写过类似深度优先遍历的算法,应该挺有感觉的。

里面提到的步骤顺序也比较贴合实际,比如先判断栈是否为空,不然容易栈空出错。再来就是读取返回地址那一步,多人会忽略,导致函数结束之后程序跳不回去,直接挂掉。

对了,文末我附了些相关资料,像C++函数调用Python 函数机制Android JNI 的返回值这些,感兴趣可以顺带看看,挺能拓展思路的。如果你刚好在写跟函数调用相关的底层实现,或者准备面试操作系统、编译原理方向的题目,这个内容可以说是刚需了。

如果你是刚入门的,可以多画几个调用栈的图,照着这个步骤还原一下流程;要是你已经写过底层或者自己搞过虚拟机,那这个流程图基本就能一眼看穿——放心,还是值得一读的。

ppt 文件大小:3.82MB