gpt4 book ai didi

c++ - 指针越过对象的末尾是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:09 26 4
gpt4 key购买 nike

在 C++ Primer 的第 2 章“变量和基本类型”中,它说:

it is possible for a pointer to an object and a pointer one past the end of a different object to hold the same address.

我不是母语人士,我认为这就是为什么我对“一个指向对象末尾的指针”这句话有点困惑的原因。谁能告诉我这是什么意思?

最佳答案

表示之后

int a[] = { 1, 2 };
float b;

(void *) &a[2] == (void *) &b 可能比较为真。

&a[2](或等效地,a+2)是刚好超过 a 末尾的指针,因为数组仅包含索引为 0 和 1 的元素。

通常,超出范围的数组索引是完全无效的(不允许访问a[2],甚至不允许计算&a[3]),但是计算刚好超过数组末尾的地址有一个特殊的异常(exception),因为事实证明,这非常有用,例如,在迭代数组时,您需要一个结束值来知道何时停止循环。

关于c++ - 指针越过对象的末尾是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com