一心热爱编程 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日

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?