const在前面
1 const int n; //n是const
2 const char *p; //*p是const, p可变
3 const (char *) p;//p是const,*p可变
4 const char* const p; //p和*p都是const
const在后面,与上面的声明对等
5 int const n.; // n.是const
6 char const * p.;// *p.是const, p.可变
7 (char*) const p.;// p.是const,*p.可变 或者 char* const p.;//p.是 const,*p.可变
8 char const* const p.;// p.和*p.都是const
来个BT的
const char* const*p
经过和人见人爱又玉树凌风的森哥讨论了一下,可以这样理解:
原型为char * * P
也就是二级指针
第一个const加入变为const char * * p
根据规则2,也就是* * p是const的
第二个const加入变为const char* const*p
根据规则6,也就是* p是const的
最后得出这个二级指针p为
------- -------- ---------------
| p | ----> | *p | ----> | **p(char) |
------- -------- ---------------
非const const const