int const *P .const 等价于const int *P。这种修饰表示P所指向的空间是常量。不能被修改。但是P本身可以被修改。
eg: int a = 10;
int b = 20;
int const *P = &a; //P指向了a
*P = 100; //编译器会报错,因为P指向的空间不能被修改。
P = &b; //正确,P本身是可以被修改的。
int const *P这种修饰保证了指针指向的空间是常量,即里边的内容是不可以改变的。但是P可以指向另一个空间。
int * const P //刚好与上边的想反。指向的空间可以修改,但是P本事不能修改。
eg: int a = 10;
int b = 20;
int *const P = &a; //P指向了a
*P = 100; //没问题。修改了P指向的空间。
P = &b; //编译时会报错,因为P指向的内容不能被修改,
//int *const P 是为了保证P的指向不发生改变,但是指向的
//空间的内容可改变。