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