设有以下C语言说明语句,则值为210的表达式是(33)。    struct s    {    int a;int *b;};    Int x0[]={110,120},x1[]={210,220};    struct s x[]={{100},{2

admin2009-02-15  44

问题 设有以下C语言说明语句,则值为210的表达式是(33)。    struct s    {    int a;int *b;};    Int x0[]={110,120},x1[]={210,220};    struct s x[]={{100},{200}},*p=x;    x[0].b=x0;x[1].b=x1;

选项 A、(++p)->a
B、*p->b
C、*(p++)->b
D、*(++p)->b

答案D

解析 注意到本试题中x为结构体数组,则数组名x代表数组首地址。x[0]、x[1]代表结构体数组元素。对于指向结构体数组的指针变量p,每次“+1”则指向下一个结构体数组元素。本题中 ++p后,由x[0]改指向x[1]。
   结构体数组x在定义时赋初值,但未对结构体成员b赋初值。语句“x[0].b=x0;x[1].b=x1;”的作用是对结构体数组x的成员b赋初值。
   对于选项A,(++p)->a等价于x[1].a==200。
   选项B,*p->b等价于*(x->b)==*x0==110。
   选项C,*(p++)->b等价于*(x[0].b)==110=x0[0]。
   选项D,*(++p)->b等价于*(x[1].b)==210=x1[0]。
   注意,在测试以上1个选项的输出值时,不能放在同一个printf函数中进行输出。因为函数中的参数运算顺序在C语言中是自右向左进行的,而p的值又是不断变化的,所以相互之间会产生影响。
转载请注明原文地址:https://jikaoti.com/ti/ODW7FFFM
0

相关试题推荐
最新回复(0)