问题
填空题
有以下程序:
void f(int Y,inf*X)
(Y=Y+*X;*X=*X+y;)
main()
int X=2,Y=4:
f(Y,&X);
printf“%d%d\n”,X,Y);
执行后输出结果是 (10) 。
答案
参考答案:8 4
解析: 本题考核的知识点是函数的调用、值传递和地址传递的区别。“值传递”指实参将值传递给形参后,实参与形参再无联系。也就是说对形参的改变将不影响实参;地址传递是指地址或数组名作为形参时的参数传递,这种情况下对形参的改变将对实参产生影响。函数f(Y,*X)的作用是让Y的值加上指针X所指向变量的值,让指针X所指向变量的值加上Y的值。由于形参Y是传值的,形参X是传地址的,故调用该函数后,作为实参的Y的值将不改变,而实参X的值将改变,故最后输出的Y的值为4,而x的值为8。