软件水平考试

2.struct a{ char name[10]; int ag

2016年01月05日来源:软件水平考试 所有评论

试题来源:2013年软考程序员考前模拟试题及答案解析(7)(8)
【分析解答题】2.struct a{ char name[10];
int age;
}aa[3]={{"abc",20},{"def",21},{"ghi",22}};
main()
{ struct a *paa=aa;
printf("%c%c%c",(*(paa+1)).name[0]
(*paa++).name[1]
(*(paa+1)).name[2]);


网考网解析:
【解析】本程序并不复杂,关键在于如何使用指向结构型数组的指针变量来引用该数组元素,以及如何引用结构型成员是数组的数组元素。 首先看结构型a及对应数组aa的定义和赋予的初值。 结构型a共有两个成员,一个是字符型数组name,另一个是整型age。 结构型数组aa有3个元素,所赋予的初值如下: aa[0].name="abc" aa[0].age=20 aa[1].name="def" aa[1].age=21 aa[2].name="ghi" aa[2].age=22 主函数中的第1个语句是定义结构型指针变量paa,并且使它指向结构型数组aa的首地址。注意,此后的*paa就是aa[0],*(paa+i)就是aa[i]。 现在可以分析输出语句了。输出格式是3个字符格式,按照printf()函数的规定,表达式表中表达式计算顺序是自右向左进行的,下面依次讨论这3个字符格式对应的输出表达式。 第3个... 查看试题解析出处>>

发布评论 查看全部评论

相关推荐