将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++就是你想要的。

虽然pint*p[1]是该数组的元素,因此p[1]int

你可以用其他方式做p = &p[1] ,例如, p = p + 1p++ 。 两者都将p设置为相同的最终值。

请注意,当使用指针进行此类算术运算时,它不会将地址递增1,它将其递增1倍于一个元素的大小,因此它实际上是相同的。