Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

8.5.8 实现函数调用

当一个函数被调用时,计算机实际上做了什么呢?第6章和第7章中的函数expression()、term()和primary()可以很好地说明这一问题,除了一个细节:这些函数都不接受参数,因此我们无法用它们解释参数是如何传递的。但是,请等一等!这些函数必然是获取一些输入的,否则它们不可能做任何有用的事情。实际上它们接受了一个隐含的参数:它们使用了一个称为ts的Token_stream对象来获得输入,而ts是一个全局变量。这有点偷偷摸摸的。我们可以改进这些函数,让它们接受一个Token_stream&类型的参数。因此本节中这几个函数都被增加了一个Token_stream&参数,而所有与函数调用实现不相关的内容都被去掉了。

首先,函数expression()非常简单,它有一个参数(ts)和两个局部变量(left和t):

第二,函数term()与expression()非常类似,只是多了一个额外的局部变量(d),用来保存除法运算的除数。

第三,函数primary()与term()很类似,只是多了一个局部变量left:

现在这些函数已经不再使用任何“偷偷摸摸的全局变量”了,用来说明函数调用机制已经非常理想了:它们都有一个参数,都有局部变量,而且它们相互调用。你可能希望有机会重新回顾一下完整的expression()、term()和primary()是什么样,但与函数调用相关的特性这里都已经给出了。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252