当我在输出中输入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?
答案 0 :(得分:2)
没有任何指针被初始化,因此它们具有随机值。将任何内容更改为等待不同月相的代码,值将发生变化。永远不要使用未分配的指针!