一、Bjarne在他的C++书中讲遇到*请念“pointer to”,然后按此法把一个声明从右往左读。比如:
char ** p1;
// p1 is a (pointer to pointer to char)
const char **p2;
// p2 is a (pointer to pointer to const char),说明**p2 不能更改,也可以直接看const 修饰的是char类型和**p2变量;
char * const * p3;
// p3 is a (pointer to const pointer to char),说明*p3不能更改,也可以直接看const修饰的是 *p3;
const char * const * p4;
// p4 is a (pointer to const pointer to const char),说明*p4和**p4都不能更改,也可以直接看const修饰谁,有两处,第一处const修饰的是char类型的 * const * p4变量,化简就是const修饰的是**p4,第二处const修饰的是*p4,说明*p4和**p4都不能更改。
char ** const p5;
// p5 is a (const pointer to pointer to char),说明p5本身不能更改,也可以直接查看const修饰的是p5。
const char ** const p6;
// p6 is a (const pointer to pointer to const char),说明p6和**p6不能更改,也可以直接查看const修饰的是p6和**p6
char * const * const p7;
// p7 is a (const pointer to const pointer to char),说明p7和*p7不能更改,也可以直接查看const修饰的是p7和*p7
const char * const * const p8;
// p8 is a (const pointer to const pointer to const char),说明p8和*p8和**p8都不能更改,也可以直接查看const修饰的是p8和*p8和**p8