解释一下C语言程序

来源:百度知道 编辑:UC知道 时间:2024/04/27 19:23:51
有以下程序
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=y+*x 就是 y=4+2 因为x是个指针所以*x就是x所指向单元的内容。

同理 *x=*x+y 就是 *x=2+6

因为 f(y,&x)中的y是一个局部变量所以他不影响main中的y, 但因为x是一个指针,对他的所有赋值操作都会直接作用于他所指向的单元即main中的x, 所以输出会是 8 4。

8 4
前一个变量是传址,函数改变了x的值,而后者只是一般的赋值,只是复制把y的值赋给了函数 f(y,&x)中的y,之后函数里的操作和这个y就没关系了.所以是那个答案.

8,4
楼上解释的对

6
8

8 4