【发布时间】:2021-03-19 10:56:05
【问题描述】:
每次我们调用函数时,激活记录的堆栈(通常只称为堆栈)会随着一条记录增长。反之,当函数返回时,它的记录不再被使用,以此类推。堆栈(也称为调用堆栈)是一种根据先进先出规则在一端增长和收缩的数据结构。
最后一行正确吗?我在 Bjarne Stroustrup 的《使用 C++ 的编程原理和实践》一书中读到了它。
【问题讨论】:
-
你能解释一下你所说的“陈述就像”是什么意思吗?这不是一个格式正确的句子。
-
你为什么要质疑最后一行?我并不是说你应该简单地接受你读到的东西,但是随机挑选一些相信和不相信的台词似乎很奇怪。是什么让你特别选择了这条线?有没有什么具体的不合理的地方?
-
我在网上找到了该文本的副本:您确实正确引用了第 8.5 节倒数第二段。 errata, here 中没有任何相关内容。击败我,但绝对是(先进后出)和(后进先出)的堆栈。绝对不是(先进先出)。 Stroustrup 本人在他的词汇表中说 here "
stack- (1) 用于保存函数局部变量的内存。(2) 标准库 *先进后出* 序列。TC++ PL 10.4.3、17.3.1、D&E 2.3、3.9。" -
先进先出意味着您调用的第一个函数(通常是 c++ 中的 main)首先被清理。这在逻辑上是错误的。 main 函数是在所有其他函数返回后被清理的最后一个函数。我认为这本书有错字。
-
Ataxias 添加的重点有所帮助,但我仍然认为关于您为何质疑最后一行的陈述会改善您的问题的表述。