zoukankan      html  css  js  c++  java
  • 栈的应用 函数调用

    首先操作系统为每个线程都分配了一块独立的空间,这块空间被组织成了栈这种数据结构,这玩意是用来存储栈帧,每进入一个函数,就会将该函数的栈帧入栈,但这个函数执行完,返回结果之后,这个函数对应的那个栈帧就出栈了,下面通过简单的代码的执行过程来说明一下吧:

        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            int c =sum(a, b);
            System.out.println(c);
        }
        
        static int sum(int a, int b) {
            return a + b;
        }    

    加上下面这张图你会更好立即:

    当sum方法执行完后sum方法出栈,返回值,main继续执行,当main执行完成后main也出栈。所以他们的出栈顺序是 sum --> main

    栈帧(Stack Frame):是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

  • 相关阅读:
    https://www.cnblogs.com/aademeng/category/1042475.html
    python中重要的模块--asyncio 转载
    await这个关键词以及asyncio.wait asyncio.gather
    async get_event_loop
    麦克米伦7000
    [GO]errorr接口的使用
    [GO]断言
    [GO]空接口
    [GO]接口的转换
    [GO]接口的嵌用继承
  • 原文地址:https://www.cnblogs.com/IT-CPC/p/10886391.html
Copyright © 2011-2022 走看看