作者在 2011-04-22 22:57:13 发布以下内容
在某论坛看到的,
void f();
int main()
{
int a = 0;
f();
printf("a = %d\n",a);
int main()
{
int a = 0;
f();
printf("a = %d\n",a);
return 0;
}
void f()//一个没有参数,没有返回值的函数
{
......//填写代码 要求执行后输出 "a = 10"
}
void f()//一个没有参数,没有返回值的函数
{
......//填写代码 要求执行后输出 "a = 10"
//如何解答?f()应该是什么?
}经过一点思考,自己写出一个实现,如下:
void f()
{
*((int *)main-476403)=10;
}
上述代码在Code::Blocks下编绎通过,感到很开心,哪知放在C-free环境下,结果却不一样,{
*((int *)main-476403)=10;
}
于是改成:
void f()
{
*((int *)main-476383)=10;
}
在C-free中就可以通过,但在C::B中又得不到预期结果了。{
*((int *)main-476383)=10;
}
求大虾的解释!!!为什么两个环境下main到a的字节偏移量不同???