将int转换为int指针地址
C ++
p
指向特定的地方
int * p
当我尝试p=p[1]
它表示无法将int转换为int(使用devcpp)。
虽然p=&p[1]
工作正常
为什么我需要做第二种方法? p[1]
是一个地址。 那么第一种方法应该有效吗? 你能解释一下这个错误吗?
p[1]
与*(p + 1)
。
你想要这个元素的地址 ,它只是(p + 1)
。 正如你所注意到的,C ++也允许&p[1]
。
p[1]
相当于*(p + 1)
所以它是一个值,而不是一个地址。 p = p + 1
或只是p++
就是你想要的。
虽然p
是int*
, p[1]
是该数组的元素,因此p[1]
是int
。
你可以用其他方式做p = &p[1]
,例如, p = p + 1
或p++
。 两者都将p
设置为相同的最终值。
请注意,当使用指针进行此类算术运算时,它不会将地址递增1,它将其递增1倍于一个元素的大小,因此它实际上是相同的。