C语言中,交换两个指针变量的值(即a和b的地址),而不是交换整形变量的值,这样是算法用在那些地方?

程序如下:#include<stdio.h>/*输入a和b两个整数,按先打后小的顺心输出a和b*/voidmain(){int*p1,*p2,*p,a,b;scanf("... 程序如下:
#include<stdio.h>
/*输入a和b两个整数,按先打后小的顺心输出a和b*/
void main()
{
int *p1,*p2,*p,a,b;
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
printf("max=%d,min=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}
/*
请注意,a和b并未交换,他们仍保留原值,但p1和p2的值改变了,p1的值原为&a,后来编程了&b,p2原值为&b,后来变成&a。
这样在输出*p1和*p2时候,实际上输出变量b和a的值,所以先输出9,后输出5.这个问题的算法不是交换整形变量的值,而是
交换两个指针变量的值(即a和b的地址).
*/
展开
 我来答
White_MouseYBZ
推荐于2020-07-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6282万
展开全部
排序,特别是字符串排序或结构体数组排序。交换两个指针与交换一个整型变量一样简单,而要交换两个字符串或结构体却要较大的空间开销和时间开销……
aixiangtian11
2012-12-01 · 超过18用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:31.7万
展开全部
这段代码用在当a,b的值进行交换时需要付出较大代价的时候,那么直接交换指针指向比交换数值来说更容易,并且效率更高!
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记住一座城
2012-11-27 · TA获得超过728个赞
知道小有建树答主
回答量:1091
采纳率:33%
帮助的人:655万
展开全部
交换指针的值这样的情况比较好,排序的时候有时会用到。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式