函数调用的执行过程

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

   一、函数的由来

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

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

  二、函数的执行过程

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


    第一步:函数调用

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

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

     3、跳转到函数体处。

    第二步:函数体执行

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

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

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

    第三步:返回

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

    三、小结

   上面我大体的说了函数执行的过程,此过程是在C或者C++的基础上编写出来的,函数的执行的过程其实还涉及参数的传递方式,包括传值、传地址等,传值的方式我会在下一篇博客详细解释,通过上下这两篇文章的对比,我们会对函数的了解更加深入一些。


评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值