const 的位置对于理解常量指针和指针常量有如下规律:
*前面的是对被指向对象的修饰,*后面的是对指针本身的修饰。
p是地址别名=>地址的引用.
①const int p; 常量整型
②const int* p; *后面修饰p,可见p没有被const修饰,故p是一个普通指针,*前面 const int 说明 指向的是常量整型,内容不可变③int const* p; p没被const修饰,p是普通指针,int 后面有个const 也算是修饰了int是常量整型
④int * const p; p被const修饰,p是一个地址别名,p的指向的地址不变,* 前面 没有const 修饰int 故 指向的是整型
⑤const int * const p;
⑥int const * const p; 5和6 都一样,后面是说 这个指针的地址不可变,指向的内容也是不能变的。
你理解了吗?若这种解释不合适,可以用英文去理解:
从后往前看:②p is a point to int const; 翻译如下:②P是一个指向整型常量的指针。
③p is a point to const int; ③P是一个指向常量整型的指针。
④p is a const point to int; ④P是一个常量,且是指向整型的指针。
⑤p is a const point to int const; ⑤P是一个常量,且是指向整型常量的指针。
⑥p is a const point to const int; ⑥P是一个常量,且是指向常量整型的指针。=>P是一个指向常量整型的常量指针。