这个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/09/09 16:22:18
这个C程序有什么问题,为什么输出是a=20,b=20,值没有交换main(){ int a=10,b=20;int *x=&a,*y=&b;printf(
xRN@B R6 7ÛM!$UQ Qc"$ tΠ $r{zsOO/f7iwX*+o1*mc8 Ǥ9XOKǪH{[q P$ʤ@J+%(q; Q3:QNB͝iDP8!cP%=F[J bH"d:_Jt>E@k;f|qou Yc"% Kv5k!^!LeGOHv_񴋫M3_ ,! ,)4ǵy+!1=Cўw߲`}m=aWf7x8ǘi…ư1i.]Ʌ 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;
}

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