函数执行流程

C语言中,函数的活动和栈有关。

栈是先进后出的数据结构。栈是由底端向顶端生长,栈顶加入数据称为压栈、入栈,栈顶弹出数据称为出栈。

def add(x, y):
    r = x + y
    print(r)
    return r
def main():
    a = 1
    b = add(a, 2)
    return b
main()
  •  main 调用,在栈顶创建栈帧
  • a=1 ,在 main栈帧中增加 a,堆里增加1,a指向这个1
  • b=add(a,2),等式右边先执行,add函数调用
  • add调用,在栈顶创建栈帧,压在main栈帧上面
  • add栈帧中增加2个变量,x变量指向1,y指向堆中新的对象2
  • 在堆中保存计算结果3.并在add栈帧中增加r指向3
  • print函数创建栈帧,实参r被压入print 栈帧中
  • print函数执行完毕,函数返回,移除栈帧
  • add函数返回,移除栈帧
  • main栈帧中增加b指向add函数的返回值对象
  • main函数返回,移除栈帧

每一次函数调用都会创建一个独立的栈帧入栈。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值