【发布时间】:2014-02-26 21:46:23
【问题描述】:
我有一个问题,你们中的一些人可以帮助我解决问题
我目前有这段代码(这两个都是全局变量)
int * x;
int * y;
现在,在main方法上我要获取这两个的地址空间,如下
int main ( int argc, char *argv[ ] ){
printf("%p\n",x);
printf("%p\n",y);
system("pause");
return 0;
}
在这两种情况下,我都得到 00000000 作为地址空间(好像它们“共享”了相同的地址空间) 我的问题是 1)为什么会得到0的地址空间?因为我们在谈论全局变量,所以它应该采用另一个地址 2)为什么这两个变量应该取000000和000004时却共享内存中的相同空间(假设赋值正确)
提前感谢您的回答
【问题讨论】:
-
%p需要一个空指针。 -
全局变量默认初始化为零。
-
您说的是地址空间,但其他一切都表明您的意思只是地址。 “地址空间”是一个单独事物的技术术语(虽然密切相关),所以我建议你停止这样使用它。
标签: c pointers global-variables memory-address