代码是这样的,
#include <stdio.h>
int main(void)
{
int a=10,b=20;
int *pa=&a,*pb=&b,*pt;
int **ppa=&pa,**ppb=&pb,**ppt;
**ppt=**ppb;
**ppb=**ppa;
**ppa=**ppt;
printf("%d %d\n",a,b);
printf("%d %d\n",*pa,*pb);
printf("%d %d\n",**ppa,**ppb);
}
在书上看到,交换a,b的值需要先交换ppa,ppb的值,再交换pa,pb的值,再交换a,b的值,才能实现完全交换,那么能不能直接利用这个代码实现a,b的值的交换?如果不能,请给一下原因,谢谢!
能否通过二级指针间接交换两个数的值?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
yun6853992 2022-03-31 17:47关注当然能实现,但是要主要的是 **的初始化,我一般理解他是指针的指针(地址的地址),是要从内部的*开始的 你这样那么**ppt应该是编译不过的。
还有 为什么能实现交换a和b的值,这里其实就是对地址,或者地址的地址,或者是它本身的值进行交换的细节处理
你交换的是谁的地址,换的就是谁,交换的是值,换的就是值。懒得写代码,逻辑就是这样的~
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用