其实很简单
int a = 1, b = 2;// 正确{int *p = &a;p = NULL;*p = 5;}{const int *p = &a;p = &b; //正确//*p = 5; //错误}{int const *p = &a;p = &b; //正确//*p = 5; //错误}{int * const p = &a;//p = &b; //错误*p = 5;}
看const的后面紧跟的是什么就可以了,1和2都是紧跟的int* ,所以const修饰内存,不可以修改内存中的值
而第3种const后是指针p,所以指针p本身(指向什么)不可以改变,但是可以改变内存中的值。