struct HAR
{int x,t; HAR *p;}[2];
main( )
{h[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
各位请帮忙解释h[0].p=&h[1];h[1].p=h;与printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);两句,顺便写出运行结果!谢了,第一个应该是3,第二个如何推算?
struct HAR
{int x,t; HAR *p;}[2];
main( )
{h[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
各位请帮忙解释h[0].p=&h[1];h[1].p=h;与printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);两句,顺便写出运行结果!谢了,第一个应该是3,第二个如何推算?
2004-09-07 18:16
2004-09-07 18:20
我觉得你的代码不能编译吧,
(有一些错误,检察一下)
第二个应该是2。h[1].p=h是把h数组的头指针给h[1].p(头指针指向h[0])

2004-09-07 18:22
struct HAR
{int x,t; HAR *p;}h[2]; 掉了个H,不好意思,刚才学懵了!
main( )
{h[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
各位请帮忙解释h[0].p=&h[1];h[1].p=h;与printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);两句,顺便写出运行结果!谢了,第一个应该是3,第二个如何推算?

2004-09-07 18:23
帮你修改下结构体定义吧: 我想是这样的“
typedef struct HAR
{int x,y;struct HAR *p;}HAR;
HAR h[2];
这样应该能通过了。
[此贴子已经被作者于2004-09-08 17:55:20编辑过]

2004-09-07 18:24
2004-09-07 19:54
h[0].y=2;结构HAR里面没有y吧,只有t啊,所以编译会出错的啊. typedef struct HAR {int x,y;struct HAR *p;}h[2]; 这个定义不怎么适合,typedef 是类型定义,定义完之后h[2]就是一个类型了,就可以象int一样使用了 此处它的类型是struct HAR. 所以我觉得应该这样定义: typedef struct _HAR { int x,y; struct _HAR *p; }HAR;
HAR h[2]; 然后呢:
main( )
{h[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y); }
运行结果为3 2 h[1].p=h; // h是数组名,,即为数组的首地址,即为 &h[0]; 所以h[1].p指向h[0]
[此贴子已经被作者于2004-09-07 20:16:18编辑过]

2004-09-07 20:09
乌鸦丘比特 能不能把typedef的用法仔细的说一遍,谢谢!!!
还有第二个,用指针呀!!!!关于链表就是用这个的了!!!
main() { typedef long knocker;
knocker a=123456; long b=123456;
printf("%ld %ld",a,b); }

2004-09-07 21:15
2004-09-08 09:01

2004-09-08 09:17