这个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;}

来源:学生作业学帮网 编辑:学帮网 时间:2024/06/02 05:57:55

这个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;
}