一、关于指针常量和指向常量的指针
const int *p;
这里表示p所指向的变量存储单元的内容不能修改
int const *p;
表示p的指向不能移动,始终只能指向该单元,任何对p的指向的修改都会报错。
二、关于const和非const间赋值的问题
如果把指向const的变量的指针赋值给其他非const指针,那么是不允许的,因为其他指针如果非const指向的指针可以修改该单元变量的值,从而导致const变量的修改。
int *p1;
const int *p2;
const int **pp2;
p1 = p2; //非法
p2 = p1; //合法
对于
pp2 = &p1;
是否合法,值得考虑;
如果我们假设其合法,那么有如下问题可以研究
const int n = 13;
pp2 = &p1;
*pp2 = &n;
*p1 = 10;
那么将会出现通过p1来改变n值得情况。所以上述
pp2 = &p1;
不合法