问题 填空题

有以下程序
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);

执行后输出结果是______。

答案

参考答案:8 4

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

解答题
多项选择题