struct st{int x,int*y;}*p; int s[]={5,6,7,8} st a[]={10,&s[0

struct st{int x,int*y;}*p; int s[]={5,6,7,8} st a[]={10,&s[0],20,&s[1]30,&[2],40,&s[3]} main( ) {
p=a;
cout
刘而不备 1年前 已收到1个回答 举报

skykingting 幼苗

共回答了16个问题采纳率:100% 举报

我是这样理解的:
st a[] = {.}实际上是a[0] = {10,&s[0]},a[1] = {20,&s[1]}.
p = a ;是将a的首地址赋值给p 也就是a[0]的地址,此时p指向a[0],p->x为10;
(++p)->x 是将指针p 加1之后取x的值,也就是a[1]的x值 为20;
*(++p)->y将p的值再加1,因为"->"的优先级比“*”高,所以会先执行->操作,得到*(&s[2]),取得s[2]的值为7;
最后一个基本同上,只是最后一个++操作,++8 为9;
不知道明白没有~

1年前

9
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.017 s. - webmaster@yulucn.com