上机运行结果是1 2,求解释struct har{ int x, y; struct har *p;} h[2];main(){
h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=h[1].p=h; printf("%d %d \n",(h[0].p)->x,(h[1].p)->y); system("pause"); return 0;
}
光阴似箭催人老,日月如移越少年。
h == &h[0]h[1].p == h == &h[0]h[0].p == h[1].p == &h[0 ]同じアドレス h、つまり &h[0] を指します。結果は明らかです。
作成者は、次のように h[0].p=h+0; を代入することで、希望する答えを得ることができます。
p は構造体配列の先頭を指し、もちろん h[0] の内容を出力します。
p
h[0]
h == &h[0]
h[1].p == h == &h[0]
h[0].p == h[1].p == &h[0 ]
同じアドレス h、つまり &h[0] を指します。結果は明らかです。
作成者は、次のように h[0].p=h+0; を代入することで、希望する答えを得ることができます。
p
は構造体配列の先頭を指し、もちろんh[0]
の内容を出力します。