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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 18:36:46
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

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
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

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
我是这样理解的:
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;
不知道明白没有~