以下程序输出结果是()。 struct stu {int x; int *y; }*p; int dt[4]={10 20 30 40}; struct stu

大学 程序 已帮助 人

以下程序输出结果是(  )。

  struct stu

  {int x;

   int *y;

  }*p;

  int dt[4]={10,20,30,40};

  struct stu a[4]=150,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};

  main()

  {

   p=a;

   printf("%d,",++p->x);  //语句1

   printf("%d,",(p)->x);  //语句2

   printf("%d\n",++(*p->y));  //语句3

  }

  A.10,20,20  B.50,60,21 C.51,60,21 D.60,70,31

热搜:下面程序的功能是输出数组s中最大元素

答案解析

难度★★☆ 搜索
  • C这类题考察了结构体成员变量的访问以及运算符的优先级。需要注意的是“->”的优先级高于“++”和“**”的优先级。语句1中,先执行p->x,得到50后再++,得到结果51。语句2中,先执行(++P),指针移动后,取得成员变量x的值为60。语句3中,先取得*p->y的值,即dt[1]的值,然后++,最后得21。
    引申一下:将语句1改为printf("%d", p++->x);
    则结果为______。答案是50,70,31