有以下程序 #include struct tt {int x;struct tt *y;}*p; struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a}; main() { int i; p=a; for(i=1;i<

admin2020-05-19  40

问题 有以下程序
#include
struct tt
{int x;struct tt *y;}*p;
   struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}
}
程序的运行结果是

选项 A、20,15,
B、30,17
C、15,30,
D、20,30,

答案A

解析 程序定义了结构体类型tt,其成员包括一个整型数据x和指向其自身结构的指针变量y。程序在定义结构体数组a的同时对其进行了初始化。其元素a[0]的成员y被赋值为元素a[1]的地址,a[1].y被赋值为a[2]的地址,a[2].y被赋予a[3]的地址,a[3].y被赋予a[0]的地址。这就形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。在主函数中,通过一个for。循环语句,输出该链表前2个节点数值成员的值,即a[0].x和a[1].x。
转载请注明原文地址:https://kaotiyun.com/show/TNCp777K
0

最新回复(0)