A-A+

有以下程序: #include <stdio.h> stxuct tt { int x;st

2022-08-06 02:37:44 问答库 阅读 174 次

问题详情

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

考点:程序