为什么我能解除引用并修改`int*const`指针?

gbo*_*box 2 c pointers

我知道指针有一个地址和内容单元格,其中包含一个地址.那么下面的代码中的指针会发生什么:

int a=5;
int* const ptr=&a;
*ptr=6;
Run Code Online (Sandbox Code Playgroud)

ptr保持的地址没有改变,那么ptr指向的值如何改变?

Gop*_*opi 5

int *const ptr = &a;
Run Code Online (Sandbox Code Playgroud)

ptr是一个常量指针,因此您无法修改此指针指向的位置.但是您可以更改存储在指针指向的位置的值.

所以

*ptr = 6;
Run Code Online (Sandbox Code Playgroud)

将变量的值修改a6.

不允许的是现有的代码说你有

int b=5;
Run Code Online (Sandbox Code Playgroud)

你也是

ptr = &b;
Run Code Online (Sandbox Code Playgroud)

然后你肯定会得到一个错误,说明常量指针指向其他一些内存位置.