当函数执行完毕后,如何返回调用处?.doc

上传人:白大夫 文档编号:3438707 上传时间:2019-08-26 格式:DOC 页数:2 大小:13KB
返回 下载 相关 举报
当函数执行完毕后,如何返回调用处?.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《当函数执行完毕后,如何返回调用处?.doc》由会员分享,可在线阅读,更多相关《当函数执行完毕后,如何返回调用处?.doc(2页珍藏版)》请在三一文库上搜索。

1、当函数执行完毕后,如何返回调用处?周立功教授数年之心血之作程序设计与数据结构以及面向AMetal框架与接口的编程(上),书本内容公开后,在电子行业掀起一片学习热潮。经周立功教授授权,本公众号特对程序设计与数据结构一书内容进行连载,愿共勉之。 2.3.1 堆栈 2.3.2 入栈与出栈1. 入栈(push)操作2. 出栈(pop)操作 2.3.3 函数的调用与返回在讨论ADT栈之前,首先看一种用于处理程序运行时的函数调用的系统栈。每当函数被调用时,系统首先创建一个称作活动记录或栈帧的结构,将其放在系统栈的栈顶。初始时,被调函数的活动记录只包含一个指向前一个活动记录的指针和一个返回地址。前一个活动记

2、录的指针指向调用函数的活动记录,而返回地址包含的是函数调用结束后下一条执行语句的地址。因为在任何时刻只有一个函数被执行,所以被执行的函数就是活动记录位于系统栈栈顶的函数。如果该函数又调用其它函数,那么函数中的局部变量(静态局部变量除外)及其参数也将加到其活动记录中,然后为被调函数创建一个新的活动记录并存放在系统栈栈顶的函数。当被调函数结束时,删除该活动记录。此时调用函数的活动记录又位于系统栈的栈顶,继续运行该函数。C语言通过硬件栈保存函数的返回地址,被调用函数将返回地址出栈到程序计数器PC中,以返回到调用点,其示例代码详见程序清单2.29。程序清单2.29 函数的调用与返回示例对于程序清单2.29(10)来说,用C语言描述如下:对于程序清单2.29(5)来说,用C语言描述如下:由此可见,当调用函数时,将主程序代码行的下一条指令的地址保存到栈中;当函数返回时,程序就会从栈中获取该地址,并从那一点继续向下执行。在函数调用了其它函数的情况下,将每一个返回地址都放到栈中;当函数结束时,就可以找到它们在栈中的地址。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1