A-A+
有以下程序 include<stdio.h> structtt {intx;structtt
问题详情
有以下程序 include<stdio.h> structtt {intx;structtt*y;)*p; structtta[4]={20,a+l,15,a+2,30,a+3,17,a}; main() {inti; p=a; for(i=l;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和指向其自身结构的指针变量v。程序在定义结构体数组a的同时对其进行了初始化。其元素a[0]的成员y被赋值为元素a[1]的地址,a[1].y被赋值为a[2]的地址,a[2].y被赋予a[3]的地址,a[3].y被赋予a[0]的地址。这就形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。在主函数L11,通过一个for循环语句,输出该链表前2个节点数值成员的值,即a[0].x和a[1].x。