这个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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-02
子函数swap中的变量名换一下看看,最好和主函数区分开。另外子函数应该为
swap(int *p1, int *p2)
{int t;
t=*p1;
*p1=*p2;
*p2=t;
}

试试看应该可以了本回答被网友采纳
第2个回答  2010-12-02
全过程根本没有动过a和b,因为x是指向a的指针,程序改变了x和y的指向,却根本没有改变a和b

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网