有点迷,希望来个人help解答下

img


首先 数组名表示地址对吧 但这是用结构体定义的一个数组变量 这个a还是地址吗? 赋给指针p是可以的?
其次希望解答一下p->x 等价于啥 是a[1].x吗?

p->x等价于a[0].x
条件表达式返回结果是1.

a是结构体数组,p是结构体指针,p=a,所以p仍然是数组a的首地址,所以p->x也就是a[0].x

*p = a,p->x相当于a[0].x,指针和数组首地址一样
第二题>的优先级高于!=,所以先执行j>k,由于j=2,k=3,所以结果为0,然后执行i!=0,由于i为1,所以i!=0成立,结果为1

如果你理解基础类型的指针赋值,那这个就好理解了,把struct{int x;float y;}类比成int,它就是表示一个类型而已,所以struct{int x;int y;} a[10]同理为int a[10], struct{int x; int y;} *p同理为int *p, p毫无疑问就是&a[0],不管是int a[10]还是struct{int x;int y;} a[10];