2010-07-07 260 views
3

如果调用(非void)函数,但不将其返回值赋给变量,该怎么办? 例如,getchar();函数返回未分配给变量

我一直想知道这样的价值会发生什么。我听到过幽默的解释,比如“它走向了太阳”等等,但我真的很想知道。有没有办法恢复这样的价值? 谢谢

+0

在什么语言? – SLaks 2010-07-07 20:09:15

回答

4

不,你不会。

该值从堆栈弹出并消失。

如果您需要返回值,则应将其分配给一个变量。

+0

大多数调用约定都使用寄存器来返回值。所以没有任何东西出现在堆栈中。 – 2010-07-07 20:10:26

0

简单地'返回'(无论是通过自己隐式地调用return还是根本不返回)并且不分配值就是这样做的,不会分配值,因此是null

3

这的确是编译器/ CPU具体,但在大多数情况下返回值将在CPU寄存器(如果它适合),并且如果该寄存器不被后面的代码所感动,你可以使用例如检索“内联汇编器”。

要回答你的问题更好,没有“发生”的值。它位于堆栈位置或寄存器内。如果你使用它,好吧......如果没有,真的没有任何反应。最终,堆栈或寄存器被新值覆盖...

相关问题