c语言程序改错(指针问题)在线等!

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:41:20
/*下面的程序用if语句比较pa和pb指向的数,使pa指向小数,pb指向大数,在实现该程序中使用了指针方式*/

#include<stdio.h>
main()
{
int a,b,*pa=&a,*pb=&b,*p;
scanf("%d,%d",pa,pb);
if(*pa>*pb)
{
p=pa;
pa=pb;
pb=p;
}
printf("%d<=%d\n",*pa,*pb);
}

int a,b,*pa=&a,*pb=&b,*p; // 这里改成*pa=a,*pb=b

问题在于指针p没有赋初值,而在转换的时候是吧pa的地址转给了pb输出时输出的是pa的地址,错因就在这里;
可以设一个int t,在交换的时候用{t=*pa;*pa=*pb;*pb=t}就对了;