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

来源:互联网 发布:fifaaol3数据库 编辑:程序博客网 时间:2024/05/22 06:44

直接上代码:

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常量的值。

0 0
原创粉丝点击