c指针之const && *

一、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

你可能感兴趣的:(c指针之const && *)