const int *p
首先const 修饰的是整个*p。所以*p是常量,是不能被赋值的。
其次,p前并没有用const 修饰,所以p是指针变量,能被赋值重新指向另一内存地址的
int *const p
1)p因为有了const 的修饰,所以只是一个指针常量:也就是说p值是不可修改的。
2)整个*p的前面没有const 的修饰。也就是说,*p是变量而不是常量,所以我们可以通过*p来修改它所指内存i1的值.
总结:
如果const 修饰在*p前,则不能改的是*p(即不能类似这样:*p=50;赋值)而不是指pi。
如果const 是直接写在p前,则p不能改(即不能类似这样:p=&i;赋值)。 |