当前位置:网站首页>五、函数的调用过程
五、函数的调用过程
2022-08-03 12:15:00 【爱打羽毛球的程序员】
当一个函数的运行期间调用另一个函数时,在运行被调函数之前,系统需要完成三件事:
1.将所有的实参、返回地址(执行的函数语句的下一条语句的地址)传递给被调函数保存
2.为被调函数的局部变量(也包括形参)分配存储空间
3.将控制权转移到被调函数的入口
从被调函数返回主调函数之前,系统也要完成三件事:
1.保存被调函数的返回结果
2.释放被调函数所占的存储空间
3.依照被调函数保存的返回地址将控制权转移到调用函数
当有多个函数相互调用时,按照“后调用先返回”的原则,上述函数之间信息传递和控制转移必须借助”栈”来实现,即系统将整个程序运行时所需的数据空间安排在一个栈中,每当调用一个数时,就在顶分配一个存储区:进行压栈操作,每当一个函数退出时,就释放它的存储区,就行出栈操作,当前运行的函数永远都在栈顶位置。
A函数调用A函数和A函数调用在计算机看来是设有任何区别,只不过用我们日常的思维方式理解比较怪异而已!
边栏推荐
猜你喜欢

asdn涨薪技术之apifox+Jenkins如何玩转接口自动化测试

零信任的基本概念【新航海】

技术总监需要会些什么?也太难了!

无监督学习KMeans学习笔记和实例

Knowledge Graph Question Answering System Based on League of Legends

3年软件测试经验,不懂自动化基础...不知道我这种测试人员是不是要被淘汰了?

超多精美礼品等你来拿!2022年中国混沌工程调查启动

word标尺有哪些作用

What knowledge points do you need to master to learn software testing?

利用ChangeStream实现Amazon DocumentDB表级别容灾复制
随机推荐
awk入门教程
bash for loop
bash case用法
从器件物理级提升到电路级
622. 设计循环队列
数据库系统原理与应用教程(074)—— MySQL 练习题:操作题 141-150(十八):综合练习
浅谈程序员的职业操守
使用.NET简单实现一个Redis的高性能克隆版(一)
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
基于英雄联盟的知识图谱问答系统
pandas连接oracle数据库并拉取表中数据到dataframe中、筛选当前时间(sysdate)到一天之前的所有数据(筛选一天范围数据)
从零开始Blazor Server(6)--基于策略的权限验证
【倒计时5天】探索音画质量提升背后的秘密,千元大礼等你来拿
mysql advanced (twenty-four) method summary of defense against SQL injection
php microtime encapsulates the tool class, calculates the running time of the interface (breakpoint)
第3章 搭建短视频App基础架构
无监督学习KMeans学习笔记和实例
GET 和 POST 有什么区别?
ROS中编译通过但是遇到可执行文件找不到的问题
word标尺有哪些作用