定义int和指向int的指针:
int i = 22, *p = &i;
定义低级别和顶级const的指针:
const int *const cp = p;
(2)没关系 - const点,无权更改(i)的值
定义指向低+顶级const的指针:
const int **const cp_2_p = &p;
(3)不行,为什么?
error C2440: 'initializing' : cannot convert from 'int **' to 'const int **const
我希望能够定义指向int
指针的指针,在该指针中我无法更改它指向的地址,也不能指向指向它的指针的地址,指向。
答案 0 :(得分:7)
通常,const
适用于其左侧的项目。 const T
的例外情况由于历史原因而存在,并且是T const
的常规替代。
cp
被声明为指向常量int
的常量指针。
cp_2_p
被声明为指向常量int的非常量指针的常量指针。
您需要声明cp_2_p
这样的类型才能兼容:
const int *const *const cp_2_p