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

admin2019-08-18  25

问题 有以下程序
    #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/qpRp777K
0

相关试题推荐
最新回复(0)