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