函数调用的执行过程

函数,英文名称function,function的更贴切的意思是“功能”或者是说“作用”,但是在中国为什么将function翻译成函数,我非常不理解,也许函数这个名称更加“高大上”的缘故吧!

一、函数的由来

一个程序经常会通过多次执行相同或者相近功能的程序段来完成,在早期的程序设计中,这些重复的功能段必须通过重复书写代码来实现。这样,不仅会引起重复的劳动、增加程序的长度、造成代码的不一致,而更重要的是,大量重复的程序代码不利于程序的立即与理解。

于是人们将功能重复的程序段抽象出来形成一个独立的功能模块,并为它命名,程序中凡是用到此功能模块的地方就用他的名字代替,这样避免了重复设计的缺点。这种抽象出来的功能模块成为函数或者子程序。

二、函数的执行过程

当调用一个函数时,整个调用过程分为三步进行,第一步是函数的调用,第二步是函数体的执行,第三步是返回,即返回到函数调用表达式的位置。

在这里插入图片描述

第一步:函数调用
1、将函数调用语句下一条语句的地址保存到在栈中,以便函数调用完成后返回。(将函数放到栈空间中称为压栈)。

2、对实参表从后向前,一次计算出实参的值,并且将值压栈。

3、跳转到函数体处。

第二步:函数体执行

4、如果函数体中定义了变量,将变量压栈

5、将每一个形参以栈中对应的实参值取代,执行函数体的功能体。

6、将函数体中的变量、保存到栈中的实参值,依次从栈中取出,释放栈空间(出栈)。

第三步:返回

7、返回过程执行的是函数体中的return语句。其过程是从栈中取出刚开始调用函数时压入的地址,跳转到函数的下一条语句。当return语句不带有表达式时,按照保存的地址返回,当return语句带有表达式时,将计算出的return表达式的值保存起来,然后再返回。

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值