C ++ - 不能将top-const指针指向另一个非const指针

时间:2017-07-12 21:00:44

标签: c++ pointers

当我尝试编译它时,我的编译器给了我错误。它告诉我

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 ++和英语),我不是程序员,也不是母语人士。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

Emm ......声明的p1类型为int *p2中的const int *类型。
因此,您希望将const int*分配给int*,这是不允许的。允许p1 = &var,因为varint类型,而不是const int

答案 1 :(得分:0)

您根本无法将一个常量指针分配给另一个指针。 例如,P1是指向常量值的指针,如果将此const int的地址提供给另一个指针,则可以修改我们希望保持不变的INT。