结构体之间怎么交换值
时间: 2023-07-21 22:03:21 浏览: 114
OPCUA读写结构体示例
可以通过结构体变量之间的赋值来交换结构体的值,也可以通过指针来实现交换。
例如:
```
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
int main() {
Point p1 = {1, 2};
Point p2 = {3, 4};
// 交换结构体值
Point temp = p1;
p1 = p2;
p2 = temp;
printf("p1: (%d, %d)\n", p1.x, p1.y);
printf("p2: (%d, %d)\n", p2.x, p2.y);
// 通过指针交换结构体值
Point* ptr1 = &p1;
Point* ptr2 = &p2;
Point* tempPtr = ptr1;
ptr1 = ptr2;
ptr2 = tempPtr;
printf("p1: (%d, %d)\n", ptr1->x, ptr1->y);
printf("p2: (%d, %d)\n", ptr2->x, ptr2->y);
return 0;
}
```
以上代码中,我们定义了一个 `Point` 结构体,包含了两个整型成员 `x` 和 `y`。然后我们定义了两个 `Point` 类型的变量 `p1` 和 `p2`,分别赋初值为 `{1, 2}` 和 `{3, 4}`。
接下来,我们通过一个临时变量 `temp` 来交换 `p1` 和 `p2` 的值。然后打印输出两个结构体的值,可以看到它们已经成功交换了。
然后我们定义了两个指向 `Point` 结构体的指针 `ptr1` 和 `ptr2`,分别指向 `p1` 和 `p2`。接着,我们通过一个临时指针 `tempPtr` 来交换 `ptr1` 和 `ptr2` 的指向,从而交换了两个结构体的值。最后再次打印输出两个结构体的值,可以看到它们同样已经成功交换了。
阅读全文