C语言用指针法交换两个数的顺序问题
C语言用指针法交换两个数的顺序问题交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:#include//这是用一个主函数就交换的方法.main(){int a,b,*x,*y,*t;scanf("%d %d",&a,&b);x=&a;y=&b; {t=x;x=y;y=t;}printf("%d %d\n",*x,*y);} #include//这是用函数调用的方法,为什么这个方法为什么就不能实现.main(){int swap(int *a,int *b);int a,b,*x,*y;scanf("%d %d",&a,&b);x=&a;y=&b;swap(x,y);printf("%d %d\n",*x,*y);} int swap(int *a,int *b){int *t;{t=a;a=b;b=t;}}
最佳回答
int swap(int *a,int *b)//a与b分别复制主函数x与y的值,即a与x的指向相同,b与y的指向相同
{
\x09int *t;
\x09{t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变
}
换成
int t;
{t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的
{
\x09int *t;
\x09{t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变
}
换成
int t;
{t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的
最新回答共有2条回答
-
2026-04-07 19:52:46负责的菠萝
回复int swap(int *a,int *b)//a与b分别复制主函数x与y的值,即a与x的指向相同,b与y的指向相同{\x09int *t;\x09{t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变}换成int t;{t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
