为什么我们不能定义指向int的指针的低+顶级const指针?

时间:2013-04-14 07:22:39

标签: c++

  1. 定义int和指向int的指针:

    int i = 22, *p = &i;

  2. 定义低级别和顶级const的指针:

    const int *const cp = p;

    (2)没关系 - const点,无权更改(i)的值

  3. 定义指向低+顶级const的指针:

    const int **const cp_2_p = &p;

    (3)不行,为什么?

    error C2440: 'initializing' : cannot convert from 'int **' to 'const int **const

  4. 我希望能够定义指向int指针的指针,在该指针中我无法更改它指向的地址,也不能指向指向它的指针的地址,指向。

1 个答案:

答案 0 :(得分:7)

通常,const适用于其左侧的项目。 const T的例外情况由于历史原因而存在,并且是T const的常规替代。

cp被声明为指向常量int常量指针。

cp_2_p被声明为指向常量int的非常量指针的常量指针。

您需要声明cp_2_p这样的类型才能兼容:

const int *const *const cp_2_p