const int a = 10;
a = 20;
编译报错,因为a是只读,一旦复制就不能修改。
int a = 1;
const int *p = &a;
*p=2;
编译报错,*p是只读, 不能被重新赋值。
int a = 1, b = 2;
const int *p = &a;
p = &b;
运行正常,*p是只读,但是p可以,现在p指向了b的地址.
int a = 1, b = 2;
int *const p = &a;
p = &b;
编译报错,因为p是只读的,不能被重新赋值。
int a = 1;
int *const p = &a;
*p=3;
正常运行,虽然p只读,但是*p不是只读,可以重新赋值,也就是可以修改a的值。
int a = 1, b = 2;
const int *const p = &a;
*p = 3;
p = &b;
编译报错,现在 *p和p 都是只读,所以不能对他们重新赋值。