const修饰的变量不能再作为左值。
const修饰的量常出现的错误:
// C++语言规范:const总是修饰离他最近的类型(离p最近还是离int最近)
const int* p; // const修饰的是整形int,*p不能被赋值(为什么不是int*,因为int可以单独组成一个类型)
int const* p; // const修饰的是int(因为p和const隔了一个*, *不是一个类型)
int* const p; // const修饰的是int*,不是const int*,const如果右边没有指针*的话,const不参与类型
const int *const p; // 前一个const修饰int,后一个const修饰int*
// const int*与int*的类型转换,多级指针的情况下,两边必须都有const
// const int* <= int* yes
// int* <= const int* No
// int** <= const int* No
// const int ** <= int** No
int a = 10;
int* p = &a;
const int*p1 = &a; // const int* <= int*
int* const p2 = &a; // int* <= int*, p2也是int*
int a = 10;
int* p = &a;
const int** q = &p // 错误 两边必须都有const ,不能把常量的地址泄露给一个普通的指针:改正 const int* p = &a
const int** q; // const修饰的是int,**q不能被赋值,q和*q都可以被赋值
int* const* q; // const修饰的是int*,*q不能被赋值,q和**q都可以被赋值
int** const q; // const修饰的是int**,