您的位置:首页 > 编程语言 > C语言/C++

一段有趣的关于C++const的代码

2017-05-14 16:51 190 查看
直接上代码:

using namespace std;
int main()
{
const int a = 1;
int *p = const_cast<int*>(&a);
*p = 2;

cout << "value a="<< a << endl;
cout << "value *p=" <<*p << endl;
cout << "address a=" <<&a << endl;
cout << "address p=" <<p << endl;

return 0;
}
试图通过指针来修改一个const常量的值。贴出结果:



单看地址是一样的,没问题。可是值却不一样。怎么回事?

我们应该遵循C++中的const和non-const的语义,任何想要破坏这个语义的事情都会给我们带来未知的结果。

再来看C的一段程序:

#include <stdio.h>

int main()
{
const int a = 1;
int *p = (int*)(&a);
*p = 2;
printf("&a=%p\n", &a);
printf("p=%p\n", p);
printf("a=%d\n", a);
printf("*p=%d\n", *p);

return 0;
}
看输出结果:



在C中是可以通过指针来修改const常量的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: