问题 单项选择题

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

答案

参考答案: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。

选择题
单项选择题