举个例子说下:
int i=39;
const int *p=&i,表示不能通过指针p来改变i的值,*p=20//错,p=&j//正确
int *const p=&i,表示p只能指向i,不能指向其他变量,但是可以通过p来改变i的值.*p=30//正确,但是p=&j//错
const int *const p=&i,表示p只能指向i,并且不能通过p来改变i的值 *p=20//错误,p=&j//错误。
第一种可以理解为,p是一个指针,它指向的内容是const int 类型。p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的。
第二种可以理解为,p是一个指针,这个指针是指向int 的const指针。它指向的值是可以被改变的如*p=3。