问题很简单:设置两个×××变量a,b,并按先大后小顺序输出a,b,用指针完成。

我第一次的代码如下:

#include
using namespace std;int main(){ int a=18,b=20,c; int *p1,*p2; p1=&a; p2=&b; if(*p1<*p2){ c=*p1; p1=p2; *p2=c; } cout<<*p1<<' '<<*p2<

   乍看一眼应该没错,然而结果却是    18 18    。

   大惑不解,仔细分析方才明白:在if 条件判断内,"p1=p2"使p1与p2均指向变量b,但接下来"*p2=c"一句却改变了 p2所指变量的值,即改变了b的值,使之等于18,故最后会输出两个18。

   将第12行改为"p2=&c",使p2指向变量c,即可达到目的。