【发布时间】:2014-03-14 17:34:26
【问题描述】:
举一个这样的简单程序:
int main(void)
{
char p;
char *q;
q = &p;
return 0;
}
&p 是如何确定的?编译器是预先计算所有此类引用还是在运行时完成?如果在运行时,是否有一些变量表或在其中查找这些东西的东西?操作系统是否会跟踪它们并且它只是询问操作系统?
我的问题在正确解释的上下文中甚至可能没有意义,所以请随时直截了当。
【问题讨论】:
-
您应该查看编译器生成的机器代码。如果你不懂机器代码,那么没有答案对你来说是非常有意义的,所以这将是开始学习的东西。
-
感谢@Kerrek 的建议,我完全忘记了这些东西的组装说明。对于任何未来的读者,这里是使用
objdump获取汇编代码的链接:stackoverflow.com/questions/1289881/…
标签: c pointers memory-address