分析以下程序的运行结果( )

来源:百度知道 编辑:UC知道 时间:2024/07/04 08:56:13
#include<stdio.h>
func(int a ,int b)
{
int temp=a;
a=b;b=temp;
}
main()
{
int x,y;
x=10;y=20;
func(x,y);
printf("%d,%d\n",x,y);
}

要有详细分析哦

func 的功能是交换两个数的值,不过这么写是有问题的。

所以,结果还是 10, 20.

运行结果为10,20

因为虽然在fun函数中进行了a,b值的交换,
但是a,b仅仅是fun函数的内部变量,他们的值的变化不影响main函数中的x,y的值,所以x,y还是10,20。
具体执行过程:
main函数中调用func(),并将x,y的值赋给fun()函数的两个临时变量a,b
在fun函数中交换a,b的值
退出fun函数,输出main函数中的x,y值

调用func后,x、y的值不变。原因二楼说得很清楚。要想实现交换功能,可做如下修改。
#include<stdio.h>
func(int *a ,int *b)
{
int temp=*a;
*a=*b;*b=temp;
}
main()
{
int x,y;
int *ptrx,*ptry;
x=10;y=20;
ptrx=&x;
ptry=&y;
func(ptrx,ptry);
printf("%d,%d\n",x,y);
}