【发布时间】:2013-03-22 17:01:55
【问题描述】:
我在我的代码中写了一些类似的东西
const int x=1;
int *ptr;
ptr = &x;
*ptr = 2;
这适用于所有编译器吗?为什么 GCC 编译器没有注意到我们正在更改常量变量?
【问题讨论】:
-
确实如此。您应该会收到类似
warning: assignment discards qualifiers from pointer target type的消息,指的是ptr = &x;这一行。 -
假设,编译器可以将
const int放入只读内存。然后*ptr = 2;会崩溃。事实上,不要指望它会崩溃。哦,如果你允许的话,编译器会抱怨丢弃ptr = &x;上的限定符。 -
我的编译器声明错误
ptr = &x;不兼容的类型'int *'和'const int * -
@BillHicks 我曾经被刀刺伤但没有死……这是否证明刺伤并不致命?