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

admin2009-06-20  48

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

答案D

解析 题目中定义了一个全局结构体数组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/P6Wp777K
0

最新回复(0)