A-A+

有以下程序: void f(int y int *x) { y=y+*x; *x=*x+y;

2022-08-06 05:03:48 问答库 阅读 176 次

问题详情

有以下程序:
void f(int y,int *x)
{ y=y+*x; *x=*x+y; }
main()
{int x=2,y=4;
f(y,&x);
ptintf("%d %dn",x,y);
}
执行后输出结果是【 】。请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:84
84 解析:“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对行参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响。函数f(y,*x)的作用是让y的值加上指针x所指向变量的值,让指针x所指向变量的值加上y的值。由于形参y是传值的,形参x是传地址的,故调用该函数后,作为实参y的值将不改变,而实参x的值将改变,故最后输出的y值为4,而x的值为8。

考点:程序