一心热爱编程 2022-03-31 17:00 采纳率: 100%
浏览 13
已结题

能否通过二级指针间接交换两个数的值?

代码是这样的,
#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的值的交换?如果不能,请给一下原因,谢谢!

  • 写回答

1条回答 默认 最新

  • yun6853992 2022-03-31 17:47
    关注

    当然能实现,但是要主要的是 **的初始化,我一般理解他是指针的指针(地址的地址),是要从内部的*开始的 你这样那么**ppt应该是编译不过的。
    还有 为什么能实现交换a和b的值,这里其实就是对地址,或者地址的地址,或者是它本身的值进行交换的细节处理
    你交换的是谁的地址,换的就是谁,交换的是值,换的就是值。

    懒得写代码,逻辑就是这样的~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日