用const修饰的变量可以用指针修改其内容
const修饰的变量在编译时就做了替换
例一:
const int a=100;
int *p=(int*)&a;
*p=200;
printf("%d\n",*p);//显示200
printf("%d\n",a);//显示100
1) const无法避免使用指针p对其内容修改成200.现在存放a的内存内容是200
2) 第二个PRINTF打印出的100不是当时a的内容,而是编译看见const后,直接将100放在要打印的a的地方.所以输出的还是100
例二:
int main(int argc, char** argv)
{
const int a=200;
int *p;
p = (int *)&a;
printf("before a=%d\n", a);
*p = 1000;
printf("after a=%d\n", a);
printf("*p=%d\n", *p);
return 0;
}
输出200,200,1000.
也就是说,实际值被修改了,但是编译的时候看到a是const ,所以在输出a的时候,直接用200替换了
阅读(1392) | 评论(0) | 转发(0) |