biee 11g的父子维:一个C的指针问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 22:41:43
请看一下这个程序:
main()
{int a,b,c,*pa=&a,*pb=&b,*pc=&c,*pn;
printf("请输入三个整数");
scanf("%d,%d%d",pa,pb,pc);
if(*pa>*pb) pn=pa,pa=pb,pb=pn;
if(*pa>*pc) pn=pa,pa=pc,pc=pn;
if(*pb>*pc) pn=pb,pb=pc,pc=pn;
printf("%d<%d<%d",*pa,*pb,*pc);
}
这个程序用来对输入的三个整数进行由小到大的排列,不知道行不行。
还有就是上面的那段程序和下面的这段程序的输出结果会有什么不同吗?
main()
{int a,b,c,*pa=&a,*pb=&b,*pc=&c,*pn;
printf("请输入三个整数");
scanf("%d,%d%d",pa,pb,pc);
if(*pa>*pb) *pn=pa,*pa=pb,*pb=pn;
if(*pa>*pc) *pn=pa,*pa=pc,*pc=pn;
if(*pb>*pc) *pn=pb,*pb=pc,*pc=pn;
printf("%d<%d<%d",*pa,*pb,*pc);
}

上面的行,下面的不行。
*pn是pn这个指针指向的值,而pa是地址,这样赋值没有任何意义

上楼说的对,第一程序可以,下一个不行,理由同上楼.*PN只能是接受一个值(开始定义的时候除外).而PA就是一个地址了,不能这样用,会出错.