1.指向常量的指针(*P是常量,P不是常量)
const int a = 5;
const int b = 6;
int c = 7;
// int *pa = &a; //不能将const int* 赋值给int*,否则可以通过*pa修改a
const int* p ; //const 约束了 指针所指向的对象 的常量性,并未约束指针本身
// int const *p; //效果等效
// *p = 10; //error
p = &b; //ok! 并未约束指针本身
p = &c; //可以将int* 赋值给const int*
c = 15;
// *p = 15; //error, 虽然c可以被赋值,确不能向*p赋值(p指向c),
2.指针常量(P是常量,*P不是常量)
int a = 5;
int b = 6;
int* const p = &a; //声明时就要初始化
// p = &b; //error,p不能再赋值,p的l-value性被约束,不能再切换到b;
*p = 15; //*p未被约束
3.指向常量的指针常量(P是常量,*P是常量)
int a = 5;
int b = 6;
const int* const p = &a;
// p = &b; //p被约束
// *p = 15; //*p也被约束
感谢UCAS杨LX大师