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

详解虚拟机!京东大佬出品HotSpot VM源码剖析笔记(附完整源码)

nacos app

ROS中编译通过但是遇到可执行文件找不到的问题

Matlab学习13-图像处理之可视化GUI程序

How to do App Automation Testing?Practical sharing of the whole process of App automation testing

广州番禺:暑期防溺水,安全不放假

(through page) ali time to upload the jar

浅谈程序员的职业操守

基于SSM和Web实现的农作物生长监控系统

PC client automation testing practice based on Sikuli GUI image recognition framework
随机推荐
数据库系统原理与应用教程(076)—— MySQL 练习题:操作题 160-167(二十):综合练习
什么是bin文件?「建议收藏」
YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label
bash while循环和until循环
第十五章 源代码文件 REST API 简介
R语言绘制时间序列的自相关函数图:使用acf函数可视化时间序列数据的自相关系数图
谷歌研究员被群嘲:研究员爆料AI有意识,被勒令休假
From scratch Blazor Server (6) - authentication based on strategy
【Verilog】HDLBits题解——Verification: Writing Testbenches
AMS simulation
Matlab学习11-图像处理之图像变换
第4章 搭建网络库&Room缓存框架
Vs 快捷键---探索不一样的编程
Go 语言快速入门指南: 介绍及安装
面试突击71:GET 和 POST 有什么区别?
【精品必知】Pod生命周期
当前页面的脚本发生错误如何解决_电脑出现当前页面脚本错误怎么办
深入理解MySQL事务MVCC的核心概念以及底层原理
Feature dimensionality reduction study notes (pca and lda) (1)
-找树根2-