这个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/05/05 23:46:08
这个C程序有什么问题,为什么输出是a=20,b=20,值没有交换main(){ int a=10,b=20;int *x=&a,*y=&b;printf(

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

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