解题思路:
定义两个(int*)型指针变量p1和p2,使它们分别指向a和b。使p1指向a和b中的大者,p2指向小者,顺序输出*p1,*p2就实现了按先大后小的顺序输出a和b。
编写程序:
运行结果:
程序分析:
输入a的值45,b的值78,由于a<b,将p1的值和p2的值交换,即将p1的指向与p2的指向交换。
请注意,这个问题的算法是不交换整型变量的值,而是交换两个指针变量的值。变量a和b的内容并未交换,它们仍保持原值,但p1和p2的值改变了。p1的值原为&a(指向a),后来变成&b(指向b)。p2原值为&b(指向b),后来变成&a(指向a)。这样在输出*p1和*p2时,实际上是输出变量b和a的值,所以先输出78,然后输出45。