C语言 求教高手帮忙 程序题
structks{inta;int*b;}s[4],*p;main(){intn=1,i;printf("\n");for(i=0;i<4;i++){s[i].a=n;s...
struct ks
{int a;
int *b;
}s[4],*p;
main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}
运行结果是多少 我得的是5,7 答案给的是7,3 请问为啥得的7,3 ??????? 展开
{int a;
int *b;
}s[4],*p;
main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,(p++)->a);
}
运行结果是多少 我得的是5,7 答案给的是7,3 请问为啥得的7,3 ??????? 展开
展开全部
struct ks
{int a;
int *b;
}s[4],*p;
main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}//出了这个循环后s[0]=1,s[1]=3,s[2]=5,s[3]=7
p=&s[0];//p只向s[0]
p++;//p指向s[1]
printf("%d,%d\n",(++p)->a,(p++)->a);//重点来了,函数调用传递参数是从右向左传递的,所以先传递的参数是,(p++)->a,这是p是指向s[1]的,++在后面所以先取值,再自加,第一个传递3,p自加后指向s[2];第二个参数传递,(++p)->a,++在前,所以先自加,p就指向了s[3],第二个传递的是7,整理后变成printf("%d,%d\n",7,3);
输出结果就是7,3了
}
{int a;
int *b;
}s[4],*p;
main()
{int n=1,i;
printf("\n");
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}//出了这个循环后s[0]=1,s[1]=3,s[2]=5,s[3]=7
p=&s[0];//p只向s[0]
p++;//p指向s[1]
printf("%d,%d\n",(++p)->a,(p++)->a);//重点来了,函数调用传递参数是从右向左传递的,所以先传递的参数是,(p++)->a,这是p是指向s[1]的,++在后面所以先取值,再自加,第一个传递3,p自加后指向s[2];第二个参数传递,(++p)->a,++在前,所以先自加,p就指向了s[3],第二个传递的是7,整理后变成printf("%d,%d\n",7,3);
输出结果就是7,3了
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询