0

我知道您可以添加一个指向 int 的指针,并减去两个指针,一个指针和一个 int,但是您可以将一个 int 添加到一个指针。所以5+指针。

4

2 回答 2

3

可以,但有限制。指针算法仅在数组内有效(或数组末尾后 1 位)。

以下是一些规则:

5.7 加法运算符 [expr.add]

5) [...] 如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则评估不应产生溢出;否则,行为未定义。

6)当两个指向同一个数组对象的元素的指针相减时,结果是两个数组元素的下标之差。[...]除非两个指针都指向同一个数组对象的元素,或者指向数组对象的最后一个元素,否则行为是未定义的。

粘贴在这里进行确认。

所以

int* x = new int;
int* y = new int;

没关系,但是:

y-x;
x + 4;
y - 1;

甚至使用二进制比较运算符的比较都是未定义的行为。

但是x+11+x没关系(单个对象算作大小为 1 的数组)

于 2013-02-16T00:20:32.267 回答
0

向指针添加一个int在语法上是可以的,但是您必须注意很多问题,例如溢出错误。

理想情况下,您应该只在数组中执行此操作。

于 2013-02-16T00:26:28.910 回答