作业帮 > 综合 > 作业

这个C程序有什么问题,为什么输出是a=20,b=20,值没有交换

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 23:49:47
这个C程序有什么问题,为什么输出是a=20,b=20,值没有交换
main()
{ int a=10,b=20;
int *x=&a,*y=&b;
printf("a=%d,b=%d\n",a,b);
swap(x,y);
printf("after change a=%d,b=%d",a,b);
getch();
}
swap(int *x,int *y )
{
int *t;
*t=*x;
*x=*y;
*y=*t;
}
* X,是a是整形变量,而*t是指针变量t所指向的变量.但t无确定的值,因此t所指向的单元是不可预见的.修改后的程序如下:
main()
{ int a=10,b=20;
int *x=&a,*y=&b;
printf("a=%d,b=%d\n",a,b);
swap(x,y);
printf("after change a=%d,b=%d",a,b);
getch();
}
swap(int *x,int *y )
{
int t;
t=*x;
*x=*y;
*y=t;
}