<分区>
我知道指针有一个地址和包含地址的内容单元格。 那么下面代码中的指针会发生什么:
int a=5;
int* const ptr=&a;
*ptr=6;
ptr持有的地址是不变的,那么ptr指向的值怎么能改变呢?
<分区>
我知道指针有一个地址和包含地址的内容单元格。 那么下面代码中的指针会发生什么:
int a=5;
int* const ptr=&a;
*ptr=6;
ptr持有的地址是不变的,那么ptr指向的值怎么能改变呢?
最佳答案
int *const ptr = &a;
这里的ptr
是一个常量指针,所以你不能修改这个指针指向的位置。但是您可以更改指针指向的位置中存储的值。
所以
*ptr = 6;
会将变量a
的值修改为6
。
什么是不允许的是与现有代码一起说你有
int b=5;
你也是
ptr = &b;
那么你肯定会得到一个错误,指出常量指针正在指向其他内存位置。
关于c - 为什么我可以取消引用和修改 `int * const` 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230908/