[提问]看看这个关于 const 变量的代码
easyx吧
全部回复
仅看楼主
level 12
yangw80
楼主
提问:以下代码的输出是什么?先不要直接运行,先口算一下?
#include <stdio.h>
void main()
{
const int a = 10;
int *p = (int *)&a; // p 的地址指向 a
*p = 100;
int x1, x2;
x1 = a;
x2 = *p;
printf("%d, %d\n", x1, x2);
}
2013年05月17日 13点05分
1
level 12
yangw80
楼主
刚刚在群里有人问的,所以群里的不许抢答啊~~
2013年05月17日 13点05分
2
level 9
zhangjb90s
妙啊,绕开了普通指针不能指向常量的限制
2013年05月17日 14点05分
3
yangw80
一点都不妙。。。猜猜结果?
2013年05月18日 03点05分
zhangjb90s
回复 yangw80 :我刚看程序时觉得程序会在int *p = (int *)&a处报错,理由是普通指针不能指向由const修饰的变量。然后运行了一下,发现我错了。再看看x1和x2的值,瞬间觉得这个陷阱太妙了。。。。 只是有个问题:*p=100后,a里面原先的10存放在哪里?单步调试后发现a的值变了
2013年05月18日 04点05分
zhangjb90s
回复 yangw80 :以上结果是在vc6下得到的的,但是在Mingw下x1和x2的值都为100
2013年05月18日 04点05分
zhangjb90s
回复 yangw80 :我觉得Mingw下得到的结果是对的。吧主怎么看?
2013年05月18日 04点05分
level 11
171930433
有点难……没答案……
2013年05月17日 16点05分
4
1