我有一个问题,有些人可以帮助我
我目前有这个代码(这些都是全局变量)
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时都在内存中共享相同的空间(假设赋值是正确的)
提前感谢您的回答
答案 0 :(得分:5)
您正在打印指针的值,它们指向的地址。在两种情况下,当全局变量初始化为0时,这为0。
如果您想知道指针变量的地址,请使用
int main ( int argc, char *argv[ ] ){
printf("%p\n",&x);
printf("%p\n",&y);
system("pause");
return 0;
}
答案 1 :(得分:0)
因为未初始化的全局变量/指针会自动初始化为零/ NULL。
答案 2 :(得分:0)
1。)它们都是未初始化的指针。编译器自动将全局指针初始化为NULL(地址为0)
2.)他们没有共享相同的地址。它们都指向NULL(地址为0)
希望这有帮助。