admin 管理员组

文章数量: 1086019


2024年5月21日发(作者:openstack实训报告总结)

c 结构体指针拷贝

在C语言中,结构体指针拷贝是将一个结构体指针的值复制

到另一个结构体指针中。可以通过以下方法进行结构体指针的

拷贝:

1. 按值拷贝:通过将源结构体指针的值逐个拷贝给目标结构体

指针来实现。这种方式适用于结构体成员较少的情况,或者成

员类型是基本数据类型的情况。

```

struct Person {

char name[20];

int age;

};

int main() {

struct Person *p1 = (struct Person *)malloc(sizeof(struct Person));

struct Person *p2 = (struct Person *)malloc(sizeof(struct Person));

strcpy(p1->name, "Tom");

p1->age = 20;

// 按值拷贝

*p2 = *p1;

printf("p2->name: %sn", p2->name);

printf("p2->age: %dn", p2->age);

free(p1);

free(p2);

return 0;

}

```

2. 指针拷贝:将源结构体指针的地址赋给目标结构体指针。这

种方式适用于结构体成员较多或成员类型为指针类型的情况。

```

struct Person {

char name[20];

int age;

};

int main() {

struct Person *p1 = (struct Person *)malloc(sizeof(struct Person));

struct Person *p2;

strcpy(p1->name, "Tom");

p1->age = 20;

// 指针拷贝

p2 = p1;

printf("p2->name: %sn", p2->name);

printf("p2->age: %dn", p2->age);

free(p1);

return 0;

}

```

需要注意的是,在进行结构体指针拷贝之后,两个结构体指针

指向的内存空间是相同的,即对一个指针的修改会影响到另一

个指针。如果需要避免这种情况,可以使用按值拷贝的方法创

建一个新的结构体指针,并将源结构体指针的值拷贝给它。


本文标签: 指针 结构 拷贝