小编Aer*_*rix的帖子

这种计算数组长度的方法是如何工作的?

我是 C++ 新手,偶然发现了这种用我不太理解的指针计算数组长度的方法。我到处找,但似乎没有一个地方解释它是如何工作的,我只是听说这应该是计算数组长度的糟糕方法,但为什么会这样以及它是如何工作的?

代码看起来像这样:

int array[4] = [0, 1, 2, 3]
//...
int length = *(&array + 1) - array
Run Code Online (Sandbox Code Playgroud)

据我尝试过,它似乎确实有效,但我不太明白为什么。我知道一点指针逻辑,但这个语句对我来说似乎很奇怪,因为你本质上是获取数组的地址(我认为的第一个元素)并向其添加一个(我可以想象这会给你地址在最后一个元素之后,但我不明白为什么你会取消引用它)。最让我困惑的是,这一切都被数组本身减去了?!没有索引或任何东西。

当有人能够向我解释这一点以及为什么它应该是糟糕的时,这确实会有帮助。

谢谢。

c++ arrays pointers

3
推荐指数
1
解决办法
76
查看次数

标签 统计

arrays ×1

c++ ×1

pointers ×1