const是属于修饰符的一种,作用是禁止修改内容,当变量的值或者地址不希望被自己的骚操作莫名其妙地更改时就产生了它的作用
const int a = 10;
int const b = 10;
之后如果对变量重新赋值是会产生错误的
int a = 10;
const int* b = &a;
int const* c = &a;
这里只是禁止通过指针来改变指向变量的值,给*b、*c重新赋值是会产生错误的,但是可以改变指针的指向,比如b = &x,虽然换了另外一个变量还是不能修改值罢了
int a = 10;
int* const b = &a;
禁止修改指向意味着创建的指针b只能保存初始化变量a的地址,之后给b = &c是会产生错误的,但是并没有禁止修改值,所以*b = 20是可行的
int a = 10;
const int* const b = &a;
int const* const c = &a;
既然是合体了,那么作用也就是合体作用,不能修改*b = 20也不能b = &x,相当于把这个指针锁死了
判断环节
int a = 10;
int const b = 10;
int c = 10;
int const* p1 = &a;
int* const p2 = &a;
int const* const p3 = &a;
//判断下面每一个的对与错
a = b;
b = c;
p1 = &c;
*p1 = 20;
p2 = &c;
*p2 = 20;
p3 = &c;
*p3 = 20;