有以下程序: #include <stdio.h> stxuct tt { int x;struct tt *y;}*p; struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};

admin2009-01-15  23

问题 有以下程序:    #include  <stdio.h>    stxuct  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,30,
B、30,17
C、15,30,
D、20,15,

答案8

解析 题目中定义了一个全局结构体数组a,结构体中包含两个成员;一个int型变量x和一个自身类型指针y。所以,结构体数组a的初始化列表中每两个初始化一个结构体元素。主函数通过一个for循环,连续调用了两次输出函数printf(),每次输出p所指元素的x成员值。p初始化时指向数组a的首地址,即a[0]的位置,所以第1次输出的值为20。然后又将a[0]的成员y的值赋给p,y在初始化时是a+1,所以p在第2次输出时指向的元素是a[1],故第2次输出的值为15。所以本题最终输出结果是“20,15,”,应该选择D。
转载请注明原文地址:https://kaotiyun.com/show/56Xp777K
0

随机试题
最新回复(0)