0

C++

p指向特定的地方

int * p

当我尝试p=p[1]时,它说无法将 int 转换为 int(使用 devcpp)。

虽然p=&p[1]工作正常

为什么我需要做第二种方法? p[1]是一个地址。那么第一种方法应该有效吗?你能解释一下这个错误吗?

4

3 回答 3

1

p[1]是一样的*(p + 1)

您想要此元素的地址,即(p + 1). &p[1]正如您所注意到的,C++ 还允许.

于 2013-07-11T23:03:36.760 回答
0

p[1]相当于*(p + 1)所以它是一个值,而不是地址。p = p + 1或者只是p++你想要的。

于 2013-07-11T23:03:19.077 回答
0

While pis an int*,p[1]是该数组中的一个元素,因此p[1]is int

您可以通过p = &p[1]其他方式进行操作,例如p = p + 1, 或p++。两者都将设置p为相同的最终值。

请注意,当使用指针进行此类算术运算时,它不会将地址增加 1,而是将地址增加 1 倍于一个元素的大小,所以它实际上是一回事。

于 2013-07-11T23:04:07.330 回答