选择题

有以下程序:
#include<stdio.h>
struct tt
{ int x;struct tt *y;} s[3]={1,0,2,0,3,0};
main()
{ struct tt *p=s+1;
p->y=s;
printf("%d,",p->x);
p=p->y;
printf("%d\n",p->x);
}
程序运行后的输出结果是

【正确答案】 B
【答案解析】

结构体 tt 是一个递归定义, 类似于链表, 通过成员变量 y 链接起来。p=s+1 指向 s[1]。 p->y 指向 s[2], 但现在 p->y=s, 因此 s[2]=s[0], 此时 s[]={1.0, 2.0, 1.0},而 p 在 s[1]位置, 因此 p->x 为 2, p=p->y, p 指向 s[2], 因此 p->x=1, 故打印结果为 2, 1。答案为 B 选项。