如何在不在堆栈上创建任何内容的情况下打印数组的内容?
How to print the contents of an array without creating anything on the stack?
我在面试中被问到这个问题。我不知道该告诉他什么。我问他有什么解决办法,但他拒绝回答。我在 google 上搜索过,但没有找到。感谢帮助。
我相信,这个问题的目的更多是检查您对内部程序工作的理解(堆栈使用,allocation/deallocation,等等)。让我们考虑一下您的问题:
How to print the contents of an array without creating anything on the
stack?
这到底是什么意思?打印后程序堆栈是否应该处于相同状态?在那种情况下,只需使用一个函数来打印堆栈内容,它就会 return 堆栈到相同的状态。如果你的面试官的意思是,堆栈不应该完全改变,那是非常困难的,而且在许多平台上也许是不可能的。这个要求意味着,你不能使用标准 C/C++ 库中的任何打印函数,因为任何调用都会改变堆栈。您可以创建工作代码,通过仅使用处理器寄存器直接写入视频缓冲区,不会影响某些较旧 OS(例如 MS DOS)中的堆栈内存。任何现代 OS 都会阻止这种情况,并且需要一些 API 调用,这将使最初的要求变得不可能。
选项一:面试官是个白痴
选项 2:问题是对性格的考验。
我总是喜欢问一个 "impossible" 问题,看看受访者是否会尝试 B.S。我或者如果他们承认他们不知道并且他们会尝试找到答案并在需要时寻求帮助
我在面试中被问到这个问题。我不知道该告诉他什么。我问他有什么解决办法,但他拒绝回答。我在 google 上搜索过,但没有找到。感谢帮助。
我相信,这个问题的目的更多是检查您对内部程序工作的理解(堆栈使用,allocation/deallocation,等等)。让我们考虑一下您的问题:
How to print the contents of an array without creating anything on the stack?
这到底是什么意思?打印后程序堆栈是否应该处于相同状态?在那种情况下,只需使用一个函数来打印堆栈内容,它就会 return 堆栈到相同的状态。如果你的面试官的意思是,堆栈不应该完全改变,那是非常困难的,而且在许多平台上也许是不可能的。这个要求意味着,你不能使用标准 C/C++ 库中的任何打印函数,因为任何调用都会改变堆栈。您可以创建工作代码,通过仅使用处理器寄存器直接写入视频缓冲区,不会影响某些较旧 OS(例如 MS DOS)中的堆栈内存。任何现代 OS 都会阻止这种情况,并且需要一些 API 调用,这将使最初的要求变得不可能。
选项一:面试官是个白痴
选项 2:问题是对性格的考验。
我总是喜欢问一个 "impossible" 问题,看看受访者是否会尝试 B.S。我或者如果他们承认他们不知道并且他们会尝试找到答案并在需要时寻求帮助