首先我们来看下以下语法你是否能分清是 指针只读 还是对象(指针所指向的值)只读 ?
double dou1 = 11.0;
const double *cptr1;
const double* cptr11;
double *const cptr2= &dou1;
double* const cptr22 = &dou1;
double const *cptr3;
double const* cptr33;
const double* const cptr5= &dou1;
const double *const cptr55 = &dou1;
const double const* cptr6;
const double const *cptr66;
答案:
//*号在空格前 和 *号在空格后 意思是一样的
double dou1 = 11.0;
const double *cptr1; //对象只读,指针可读写
const double* cptr11; //对象只读,指针可读写
double *const cptr2= &dou1; //对象可读写,指针只读
double* const cptr22 = &dou1; //对象可读写,指针只读
double const *cptr3; //对象只读,指针可读写
double const* cptr33; //对象只读,指针可读写
const double* const cptr5= &dou1; //对象只读,指针只读
const double *const cptr55 = &dou1; //对象只读,指针只读
const double const* cptr6; //对象只读,指针可读写 这里的两个const 都是修饰double对象的
const double const *cptr66; //对象只读,指针可读写 这里的两个const 都是修饰double对象的
从上面的定义可以找到一个规律
1,const 直接和double在一起 中间没有别的字符,则 double对象(对象:指针所指向的值)只读,指针可读写。
2,const 和double中间只有有*号 则 指针只读,对象(对象:指针所指向的值)可读写