C上的地址空间相同

use*_*147 0 c pointers global-variables memory-address

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

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

    int * x;
    int * y;
Run Code Online (Sandbox Code Playgroud)

现在,在main方法上我想得到那两个的地址空间,如下所示

    int main ( int argc, char *argv[ ] ){
     printf("%p\n",x);
     printf("%p\n",y);
     system("pause");
     return 0;
     }
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我得到00000000作为地址空间(好像他们"共享"相同的地址空间)我的问题是1)为什么它的地址空间为0?由于我们正在讨论全局变量,因此它应该采用另一个地址2)当它们应该采用000000和000004时,为什么两个变量在内存中共享相同的空间(假设赋值是正确的)

提前感谢您的回答

Gun*_*ica 5

您正在打印指针的值,它们指向的地址.在两种情况下,当全局变量初始化为0时,此值为0.

如果您想知道指针变量的地址,请使用

int main ( int argc, char *argv[ ] ){
 printf("%p\n",&x);
 printf("%p\n",&y);
 system("pause");
 return 0;
}
Run Code Online (Sandbox Code Playgroud)