C语言结构问题 请你指教

[复制链接]
查看11 | 回复2 | 2010-8-9 09:28:30 | 显示全部楼层 |阅读模式
#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;ix); p=p->y;}
}
程序的运行结果是
A)20,30, B)30,17 C)15,30, D)20,15
请问这道题问什么选D 您能详细说一下吗 谢谢

回复

使用道具 举报

千问 | 2010-8-9 09:28:30 | 显示全部楼层
很简单啊,这个结构中x表示一个整数,y表示指向结构的指针。a[0]的x是20,y指向a[1]。a[1]的x是15,y指向a[2]。主程序中,p指向a[0],第一次循环p->x表示a[0]的x,值是20,然后p指向了a[0]的y,也就是a[1],所以第二次输出是a[1]的x,即15
回复

使用道具 举报

千问 | 2010-8-9 09:28:30 | 显示全部楼层
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a}; 把这句话拆成4行:struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};就是一个链表,取表头开始连续打印两项就是20和15,所以选D
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行