C语言通过指针交换整个结构体
时间: 2024-12-18 07:14:18 浏览: 21
在C语言中,你可以使用指针来交换两个结构体变量的内容,这是因为结构体本质上就是由一组数据成员组成的,而指针可以存储其内存地址,进而访问这些数据成员。下面是一个简单的例子:
```c
#include <stdio.h>
// 定义结构体
typedef struct {
int a;
int b;
} MyStruct;
void swap(MyStruct* p1, MyStruct* p2) {
// 使用临时变量存储第一个指针的数据
int temp_a = p1->a;
int temp_b = p1->b;
// 更新第一个指针指向的结构体内容
p1->a = p2->a;
p1->b = p2->b;
// 更新第二个指针指向的结构体内容
p2->a = temp_a; // 注意这里,不是 *p2
p2->b = temp_b; // 另外一个也是,不是 *p2
}
int main() {
MyStruct s1 = {5, 10};
MyStruct s2 = {15, 20};
printf("Before swapping:\n");
printf("s1: (%d, %d)\n", s1.a, s1.b);
printf("s2: (%d, %d)\n", s2.a, s2.b);
// 传递结构体指针给swap函数
swap(&s1, &s2);
printf("\nAfter swapping:\n");
printf("s1: (%d, %d)\n", s1.a, s1.b);
printf("s2: (%d, %d)\n", s2.a, s2.b);
return 0;
}
```
在这个`swap`函数中,我们通过指针间接修改了结构体的内容,实现了数据的交换。
阅读全文