gpt4 book ai didi

c - 如何在C中交换两个结构

转载 作者:行者123 更新时间:2023-12-04 09:30:45 24 4
gpt4 key购买 nike

我在看一个用 C 编写的代码,它交换 wto 数字的位置,然后交换两个结构。我无法理解第二个:

#define SWAP(a,b) do {NODE *t = (a) ; (a) = (b) ; (b) = t;}

为什么会这样??当我声明某个结构“节点”的 t 指针时,我直接指向 a ,然后来自 b 的所有数据都被传输到 a ,并且 b 也指向 a ...所以我得到它们都指向同一个对象(结构)。

如果我改为: Node t = *a ,它不应该让它工作吗?或者我错了..

谢谢!!

最佳答案

在这种特殊情况下,您没有在结构之间传输任何数据。您只是在处理保存结构地址的指针。

首先,您创建一个指针 t,它开始指向 a 指向的任何内容。然后,修改指针 a 使其指向 b 所指向的任何内容。最后,您修改 b 以指向 t 指向的任何内容,或者修改 a 之前指向的内容。

因此,总结一下:您没有在结构 *a*b 之间移动任何数据(其中 * 表示取消引用指针)但只是交换指针 ab

关于c - 如何在C中交换两个结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com