我知道您可以添加一个指向 int 的指针,并减去两个指针,一个指针和一个 int,但是您可以将一个 int 添加到一个指针。所以5+指针。
问问题
101 次
2 回答
3
可以,但有限制。指针算法仅在数组内有效(或数组末尾后 1 位)。
以下是一些规则:
5.7 加法运算符 [expr.add]
5) [...] 如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则评估不应产生溢出;否则,行为未定义。
和
6)当两个指向同一个数组对象的元素的指针相减时,结果是两个数组元素的下标之差。[...]除非两个指针都指向同一个数组对象的元素,或者指向数组对象的最后一个元素,否则行为是未定义的。
粘贴在这里进行确认。
所以
int* x = new int;
int* y = new int;
没关系,但是:
y-x;
x + 4;
y - 1;
甚至使用二进制比较运算符的比较都是未定义的行为。
但是x+1
,1+x
没关系(单个对象算作大小为 1 的数组)
于 2013-02-16T00:20:32.267 回答
0
向指针添加一个int
在语法上是可以的,但是您必须注意很多问题,例如溢出错误。
理想情况下,您应该只在数组中执行此操作。
于 2013-02-16T00:26:28.910 回答