【发布时间】:2020-02-06 08:10:01
【问题描述】:
让
int i = 1;
const int *p = &i;
为什么我可以更改i 而不能更改*p?或者更确切地说,允许我写i = 5 而不是*p = 5 的幕后发生了什么?
【问题讨论】:
-
为什么不能通过指针改变呢?因为你说它是一个 const int 的指针,你不能改变常量。
-
@Blaze 我试图了解编译器如何区分指针和值,因为指针只指向非常量值?
-
A
const指针是一个指针,其引用值不能通过该指针更改。没有什么可以阻止该值通过其他方式发生变化。 -
"编译器如何区分指针和值,因为指针只是指向非常量值?" -- 为什么不能要做到这一点?这发生在编译时。它看到
*p = 5,它知道p是一个指向const int的指针,然后你得到错误。 -
这能回答你的问题吗? Dereferencing a pointer to constant