为什么int * const p1;在int * p1时导致错误;工作正常吗?

时间:2016-01-14 23:28:52

标签: c++ pointers const lvalue rvalue

我是C ++的新手,正在尝试学习指针的概念。我很困惑为什么第三和第四个陈述导致错误,而第一个和第二个陈述就好了。

plotOptions: {
    column: {
        zones: [{
            value: 10, // Values up to 10 (not including) ...
            color: 'blue' // ... have the color blue.
        },{
            color: 'red' // Values from 10 (including) and up have the color red
        }]
    }
}

PS:我理解在声明它们时至少初始化所有指针或者至少将它们的值设置为nullptr或0是一个好习惯。我问这个问题是因为我想理解它背后的概念。

3 个答案:

答案 0 :(得分:4)

最后两个语句声明指针本身是常量。而且你没有给他们价值。这使得它们非常无用,因为它们永远不会被更改(如果它们是堆栈或类成员变量,它们甚至没有像NULL这样的定义值,所以它们实际上是没用的。) / p>

答案 1 :(得分:3)

必须在定义中初始化顶级const 的非类类型。

第3行和第4行具有顶级const,因为p1无法修改。第2行没有顶级const;可以修改p1 ,但它指向的int不能修改。

答案 2 :(得分:0)

这不是良好做法的问题 您正在声明一些指向int和const int的const指针(有关详细信息,请参阅here),在这两种情况下,您必须在定义它们时初始化它们。