有以下程序 #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;

admin2021-02-25  26

问题 有以下程序
#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);
}
程序运行后的输出结果是

选项 A、2,3
B、2,1
C、1,2
D、3,1

答案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选项。
转载请注明原文地址:https://kaotiyun.com/show/JQtp777K
0

最新回复(0)