C/C++ const用法注意

来源:互联网 发布:最美的诗词 知乎 编辑:程序博客网 时间:2024/05/01 06:49
int main(){    const int a = 2;    int* p = (int*)&a;    *p = 3;    printf("a=%d *p=%d\n", a, *p);    return 0;}


gcc/cl 以c编译:输出 a=3 *p=3

g++/cl 以c++编译:输出 a=2 *p=3

你在定义的时候i已经是常量且赋值了,在编译过程中 i的值相当于被替换成1,所以在程序执行过程中 i始终为1;

而你在int *p=(int *)&i; *p=100;改变了p指向i这块内存空间的值,但是编译器是不会去读取这块内存中的值的;

如果在C++的源码中将a声明为const volatile int a= 1;其输出就和c的一样了

原创粉丝点击