2 f476559604 f476559604 于 2016.03.21 14:29 提问

c语言中为什么这样赋值后,两个却一样

#include
#include
typedef struct HH
{
int i;
int j;
struct HH *next;
}HH;

void changeV(HH *p)
{
HH tt;
tt.i=6;
tt.j=2;
tt.next=&p[0];
p[0]=tt;
//tmp->i=1;
//tmp->j=2;
//tmp->next=NULL;
//p[0]=tmp;

}
int main()
{
HH h[5];
for(int i=0;i<5;i++)
{
h[i].i=0;
h[i].j=0;
h[i].next=NULL;
}
changeV(h);
printf("%d\n",h[0].next);
printf("%d\n",&h[0]);
//结果
//-1904858288
//-1904858288

return 0;
}


1个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.21 14:38
已采纳

tt.next=&p[0]; //将tt的next指针指向p[0]的地址
p[0]=tt; //将tt赋值给p[0],此时p[0].i=6,p[0].j=2,p[0].next=&p[0]
然后执行printf("%p\n",h[0].next); //h[0].next就是&p[0],所以两句打印的是一样的(打印地址应该用%p)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!