这个程序为什么输出20 21

来源:百度知道 编辑:UC知道 时间:2024/09/23 00:23:55
#include"stdio.h"
struct s
{int x,*y;
} *p;
int data[]={10,20,30};
struct s array[]={100,&data[0],200,&data[1],300,&data[2]};

main()
{p=array;
printf("%d\n",*++p->y);
p=array;
printf("%d\n",++*p->y);
}

这道题两个知识点:结构的类型以及运算符的优先级,
至于结构的类型在于和数据结合起来。
array[0] = {100,&data[0]};array是结构类型,这样写为了方便观看
至于结果而言,*++p->y;从第一个开始后移一下到&data[1],再进行引用得到地址所对应的数值data[1] = 20;所以第一个会输出20.第二个数据类似判断