struct st
structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,...
struct st
{ int x;int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf(“%d ”,++p->x);
printf(“%d ”,(++p)->x);
printf(“%d ”,++(*p->y));}
上面的程序有没有高手指点一下是怎么回事 展开
{ int x;int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf(“%d ”,++p->x);
printf(“%d ”,(++p)->x);
printf(“%d ”,++(*p->y));}
上面的程序有没有高手指点一下是怎么回事 展开
1个回答
展开全部
我是这么理解的。
struct st{
int x;
int *y;
}*p;
int dt[4]={10,20,30,40};
st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
// aa[0] aa[1] aa[2] aa[3]
int main(){
//这里涉及到的运算符的优先级是这样的,() 优于 -> 优于 ++ 优于 *
p=aa;//p指针指向aa,即指向aa的第一个元素地址
printf("%d",++p->x);//先取aa的第一个元素的x值,再对x+1=51
printf("%d",(++p)->x);//p指针先+1,指向aa的第二个元素,取其x的值为60
printf("%d",++(*p->y));//p指针现在仍指向aa的第二个元素,取*y的值,*p->y是对*y所指向的地址的访问,所以对应的是dt[1],20,再20+1=21
return 0;
}
struct st{
int x;
int *y;
}*p;
int dt[4]={10,20,30,40};
st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
// aa[0] aa[1] aa[2] aa[3]
int main(){
//这里涉及到的运算符的优先级是这样的,() 优于 -> 优于 ++ 优于 *
p=aa;//p指针指向aa,即指向aa的第一个元素地址
printf("%d",++p->x);//先取aa的第一个元素的x值,再对x+1=51
printf("%d",(++p)->x);//p指针先+1,指向aa的第二个元素,取其x的值为60
printf("%d",++(*p->y));//p指针现在仍指向aa的第二个元素,取*y的值,*p->y是对*y所指向的地址的访问,所以对应的是dt[1],20,再20+1=21
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询