[英]Convert int to int pointers address
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倍,因此它的确是一样的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.