我是 C++ 新手,偶然发现了这种用我不太理解的指针计算数组长度的方法。我到处找,但似乎没有一个地方解释它是如何工作的,我只是听说这应该是计算数组长度的糟糕方法,但为什么会这样以及它是如何工作的?
代码看起来像这样:
int array[4] = [0, 1, 2, 3]
//...
int length = *(&array + 1) - array
Run Code Online (Sandbox Code Playgroud)
据我尝试过,它似乎确实有效,但我不太明白为什么。我知道一点指针逻辑,但这个语句对我来说似乎很奇怪,因为你本质上是获取数组的地址(我认为的第一个元素)并向其添加一个(我可以想象这会给你地址在最后一个元素之后,但我不明白为什么你会取消引用它)。最让我困惑的是,这一切都被数组本身减去了?!没有索引或任何东西。
当有人能够向我解释这一点以及为什么它应该是糟糕的时,这确实会有帮助。
谢谢。