首页 > 试题广场 >

给出以下程序的执行结果。 #include struct

[问答题]
给出以下程序的执行结果。
#include <stdio.h>
struct st
{   int x;
    int * y;
} * p;
int s[ ]={10,20,30,40};
struct st a[ ]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};
void main()
{
    p=a;
    printf("%d,",p->x);
    printf("%d,",( ++p)->x);
    printf("%d,", * ( ++p)->y);
    printf("%s\n", ++( * ( ++p)->y));
}

推荐
程序中a是结构体数组,p是指向a的结构体指针变量,执行p=a后,其存储结构如图所示。
p->x=a[0].x=1。
对于表达式(++p)->x,p指针加1指向a[1],返回a[1].x值为2。
对于表达式*(++p)->y,p指针加1指向a[2],运算符"->"优先级高于"*",执行 * (&s[2]),即s[2]=30。
对于表达式++(* (++p)->y),p指针加1指向a[3],运算符“->”优先级高于“*”,执行*(&s[3]),即s[3]=40,最后自加1,返回41。
程序输出为:1,2,30,41。
发表于 2018-05-07 20:41:24 回复(0)