从被调函数返回调用函数的一般步骤-数据结构C语言版严蔚敏PPT
从被调函数返回调用函数的步骤讲得挺清楚的,用的是严蔚敏的 C 语言版 PPT 内容,老教材了,但讲原理一点不落后,适合打基础的同学。嗯,整个过程其实就是模拟函数调用栈的出栈逻辑,照着栈顶一步步还原调用现场,有助于你理解递归怎么回事。
栈结构的函数调用返回流程,还原参数、局部变量、返回地址这些操作,其实就是恢复“上一个函数”的上下文。像递归
或者函数嵌套调用时,靠这个过程把逻辑接上。你要是写过类似深度优先遍历
的算法,应该挺有感觉的。
里面提到的步骤顺序也比较贴合实际,比如先判断栈是否为空
,不然容易栈空出错。再来就是读取返回地址
那一步,多人会忽略,导致函数结束之后程序跳不回去,直接挂掉。
对了,文末我附了些相关资料,像C++函数调用
、Python 函数机制
、Android JNI 的返回值
这些,感兴趣可以顺带看看,挺能拓展思路的。如果你刚好在写跟函数调用相关的底层实现,或者准备面试操作系统、编译原理方向的题目,这个内容可以说是刚需了。
如果你是刚入门的,可以多画几个调用栈的图,照着这个步骤还原一下流程;要是你已经写过底层或者自己搞过虚拟机
,那这个流程图基本就能一眼看穿——放心,还是值得一读的。
3.82MB
文件大小:
评论区