该怎么分析这道C语言输出的题呢??
void f(int y,int *x)
{y=y+*x; *x=*x+y;}
main()
{ int x=2,y=4;
f(y,&x);
printf("%d,%d\n",x,y);
}
结果应该是什么呢??为什么?
以后遇到这样的题该怎么解决呢?
参考答案:y的值是按值传递的,形参的值不能改变实参y的值,所以输出y还是4.
而形参x是指针,y=y+*x, y=6,然后*x=*x+y,*x=8.形参值的改变可以改变实参的值.所以x的值是8
void f(int y,int *x)
{y=y+*x; *x=*x+y;}
main()
{ int x=2,y=4;
f(y,&x);
printf("%d,%d\n",x,y);
}
结果应该是什么呢??为什么?
以后遇到这样的题该怎么解决呢?
参考答案:y的值是按值传递的,形参的值不能改变实参y的值,所以输出y还是4.
而形参x是指针,y=y+*x, y=6,然后*x=*x+y,*x=8.形参值的改变可以改变实参的值.所以x的值是8