当前位置:网站首页>五、函数的调用过程
五、函数的调用过程
2022-08-03 12:15:00 【爱打羽毛球的程序员】
当一个函数的运行期间调用另一个函数时,在运行被调函数之前,系统需要完成三件事:
1.将所有的实参、返回地址(执行的函数语句的下一条语句的地址)传递给被调函数保存
2.为被调函数的局部变量(也包括形参)分配存储空间
3.将控制权转移到被调函数的入口
从被调函数返回主调函数之前,系统也要完成三件事:
1.保存被调函数的返回结果
2.释放被调函数所占的存储空间
3.依照被调函数保存的返回地址将控制权转移到调用函数
当有多个函数相互调用时,按照“后调用先返回”的原则,上述函数之间信息传递和控制转移必须借助”栈”来实现,即系统将整个程序运行时所需的数据空间安排在一个栈中,每当调用一个数时,就在顶分配一个存储区:进行压栈操作,每当一个函数退出时,就释放它的存储区,就行出栈操作,当前运行的函数永远都在栈顶位置。
A函数调用A函数和A函数调用在计算机看来是设有任何区别,只不过用我们日常的思维方式理解比较怪异而已!
边栏推荐
猜你喜欢
随机推荐
pandas连接oracle数据库并拉取表中数据到dataframe中、生成当前时间的时间戳数据、格式化为指定的格式(“%Y-%m-%d-%H-%M-%S“)并添加到csv文件名称中
当前页面的脚本发生错误如何解决_电脑出现当前页面脚本错误怎么办
AMS simulation
What knowledge points do you need to master to learn software testing?
Explain the virtual machine in detail!JD.com produced HotSpot VM source code analysis notes (with complete source code)
c语言进阶篇:内存函数
距LiveVideoStackCon 2022 上海站开幕还有3天!
从零开始Blazor Server(6)--基于策略的权限验证
谷歌研究员被群嘲:研究员爆料AI有意识,被勒令休假
深入理解MySQL事务MVCC的核心概念以及底层原理
第十五章 源代码文件 REST API 简介
Go 语言快速入门指南: 介绍及安装
Five super handy phone open-source automation tools, which is suitable for you?
【精品必知】Pod生命周期
R语言绘制时间序列的自相关函数图:使用acf函数可视化时间序列数据的自相关系数图
零信任的基本概念【新航海】
GET 和 POST 有什么区别?
日常开发写代码原则
我在母胎SOLO20年
通过点击CheckBox实现背景变换小案例