如下文件Hello.c
#include <stdio.h>
int main()
{
const int a = 10;
int *p = (int *)&a;
*p = 20;
printf("a=%d, *p=%d\n", a, *p);
return 0;
}
结果:a=20 *p=20
如果文件名是Hello.cpp,则结果是a=10 *p=20
上面两种情况的编译用的是gcc Hello.xx
结论:c和c++对常量的处理方式是不同的。