函数调用的执行过程

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 17:01   11   0

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

一、函数的由来

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

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

二、函数的执行过程

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


第一步:函数调用

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

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

3、跳转到函数体处。

第二步:函数体执行

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

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

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

第三步:返回

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

三、小结

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


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP