const和指针

发布时间 2023-05-06 16:59:01作者: RenKaixuan

const和指针

当一个变量用const修饰后变量的值就不允许改变了。但const和指针结合使用时需要注意。

int a;
int *p = &a;

指针可看作两部分,变量p存储a的地址,*p是变量p所指地址单元中存储的内容。所以const可修饰的也有两部分:变量p本身、p指向的地址单元

const int *p = &a

int a;
const int *p = &a;

此时const放在*p前方,const修饰的是*p即指针指向的地址单元。此时便不可通过*p去更改变量a的值。但变量a仍可更改自己的值。

int * const p = &a;

int a;
int * const p = &a;

此时const修饰变量p,则变量p的内容不能改变。变量p是指针,指针内存储地址,所以p指针不能指向其它地址,但可修改所指地址的内容

const int * const p = &a

int a;
const int * const p = &a;

此处使用了两个const,即修饰p本身也修饰p指向的地址。所以p既不能变更地址指向也不能通过*p改变a的值