C上的地址空间相同

时间:2014-02-26 21:46:23

标签: c pointers global-variables memory-address

我有一个问题,有些人可以帮助我

我目前有这个代码(这些都是全局变量)

    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时都在内存中共享相同的空间(假设赋值是正确的)

提前感谢您的回答

3 个答案:

答案 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)

希望这有帮助。