当我尝试编译它时,我的编译器给了我错误。它告诉我
p1 = p2;
来自:
int main ()
{
int var, *p1;
const int *p2 = &var;
p1 = p2;
return 0;
}
是无效转换(const int - > int)。 Var不是常数,所以它不应该阻碍。我知道p2不能用来改变var的值,但我认为如果var为p1,它应该只分配地址。
我知道这个:
p1 = &var;
产生相同的结果,但我感兴趣的是前者不起作用的原因。这只是出于对C ++内部运作的好奇心。
抱歉我的语言(C ++和英语),我不是程序员,也不是母语人士。
提前谢谢。
答案 0 :(得分:2)
Emm ......声明的p1
类型为int *
。 p2
中的const int *
类型。
因此,您希望将const int*
分配给int*
,这是不允许的。允许p1 = &var
,因为var
有int
类型,而不是const int
。
答案 1 :(得分:0)
您根本无法将一个常量指针分配给另一个指针。 例如,P1是指向常量值的指针,如果将此const int的地址提供给另一个指针,则可以修改我们希望保持不变的INT。