• Java基础知识篇之函数调用基本原理


    函数调用的基本原理

    在介绍递归函数的时候,我们看到了一个系统错误:java.lang.StackOverflowError,理解这个错误,需要理解函数调用的实现机制。下面,我们先来了解一个重要的概念:栈,然后再通过一些例子来仔细分析函数调用的过程。

    栈的概念

    我们之前谈过程序执行的基本原理:CPU有一个指令指示器,指向下一条要执行的指令,要么顺序执行,要么进行跳转(条件跳转或无条件跳转)。

    基本上,这依然是成立的,程序从main函数开始顺序执行,函数调用可以看作一个无条件跳转,跳转到对应函数的指令处开始执行,碰到return语句或者函数结尾的时候,再执行一次无条件跳转,跳转回调用方,执行调用函数后的下一条指令。

    但这里面有几个问题。

    1)参数如何传递?

    2)函数如何知道返回到什么地方?

    在if/else、for中,跳转的地址都是确定的,但函数自己并不知道会被谁调用,而且可能会被很多地方调用,它并不能提前知道执行结束后返回哪里。

    3)函数结果如何传给调用方?

    解决思路是使用内存来存放这些数据,函数调用方和函数自己就如何存放和使用这些数据达成一个一致的协议或约定。这个约定在各种计算机系统中都是类似的,存放这些数据的内存有一个相同的名字,叫栈 。

    栈是一块内存,但它的使用有特别的约定,一般是先进后出,类似于一个桶&#x

  • 相关阅读:
    5G-A,未来已来
    数据库中的DDL与DML
    【图论】差分约束算法详解
    小程序笔记3
    Labview 实战 99乘法表
    Mac虚拟机Parallels Desktop 20 for Mac破解版发布 完整支持 Windows 11
    亚商投资顾问 早餐FM/0929 国际油价全线上涨
    Python在数据分析与可视化中的深度实践
    嵌入式Linux和stm32区别? 之间有什么关系吗?
    工地安全反光衣穿戴监测报警摄像机
  • 原文地址:https://blog.csdn.net/Abcd6578787_/article/details/127091599