函数中结构指针的地址是0x1

时间:2018-02-24 11:07:16

标签: c++ pointers

当我在输出中输入p1的c ++项目地址为0x1

struct f_52
{
    char s[10];
    int *pi;
};
struct f_51
{
    int i;
    char *pc;
    f_52 *ps;
};
void function_1()
{
    struct f_51 *p1;
    struct f_52 *p3;
    cout<<"Address p1:\t"<<p1<<endl;
    cout<<"Address p3:\t"<<p3<<endl;
    p1 = new f_51;
    cout<<"================================\n";
    cout<<"Address p1:\t"<<p1<<endl;
    cout<<"        p1.i:\t"<<p1->i<<endl
        <<"        p1.pc:\t"<<*(p1->pc)<<endl
        <<"Address p1.ps:\t"<<p1->ps<<endl;
    //cout<<"        p3.pi:\t"<<*(p3->pi)<<endl;
}
int main()
{
    function_1();
}

输出:

  

地址p1:0x1

     

地址p2:0x80489e2

     

...

这是正确的,为什么是0x1?

1 个答案:

答案 0 :(得分:2)

没有任何指针被初始化,因此它们具有随机值。将任何内容更改为等待不同月相的代码,值将发生变化。永远不要使用未分配的指针!