簡體   English   中英

函數返回未分配給變量

[英]function return not assigned to a variable

如果調用(非void)函數但不將其返回值賦給變量怎么辦? 例如,getchar();

我一直想知道這樣的價值會發生什么。 我聽過幽默的解釋,比如“它走向以太”等等,但我真的很想知道。 有沒有辦法恢復這樣的價值? 謝謝

不,你不會。

該值從堆棧中彈出並消失。

如果需要返回值,則應將其分配給變量。

這實際上是編譯器/ CPU特定的,但在大多數情況下,返回值將在CPU寄存器中(如果它適合),如果后續代碼未觸及該寄存器,則可以使用例如“內聯匯編程序”檢索它。

為了更好地回答你的問題,價值沒有“發生”。 它位於堆棧位置或寄存器內。 如果你使用它,那很好......如果沒有,真的沒有任何反應。 最終,堆棧或寄存器被新值覆蓋......

簡單地'返回'(通過隱式調用自身返回或者根本不返回)並且不分配值就是這樣,不分配值因此為null

如果您想了解更多有關它的工作原理,請查看: http//en.wikipedia.org/wiki/Call_stack

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM