码迷,mamicode.com
首页 > 其他好文 > 详细

函数调用的执行过程

时间:2015-03-15 09:35:36      阅读:443      评论:0      收藏:0      [点我收藏+]

标签:c++

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

   一、函数的由来

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

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

  二、函数的执行过程

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

技术分享

    第一步:函数调用

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

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

     3、跳转到函数体处。

    第二步:函数体执行

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

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

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

    第三步:返回

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

    三、小结

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


函数调用的执行过程

标签:c++

原文地址:http://blog.csdn.net/zhoukun1008/article/details/44262531

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!