在C语言中,结构体赋值可以通过以下几种方式进行:
- 逐个成员赋值 :
struct Person {
char name;
int age;
};
struct Person p1;
strcpy(p1.name, "John");
p1.age = 25;
- 使用花括号直接赋值 :
struct Person p1 = {"John", 25};
- 复制赋值 :
struct Person p1 = {"John", 25};
struct Person p2;
p2 = p1; // 将p1的值复制给p2
- 结构体数组的赋值 :
struct Person people = {{"John", 25}, {"Alice", 30}};
- 结构体作为参数时赋值 :
void assignStruct(struct Person *p) {
p->name = "Alice";
p->age = 20;
}
struct Person p1 = {"John", 25};
assignStruct(&p1);
- 结构体字面量赋值 :
struct Person p1 = {.name = "Alice", .age = 20};
需要注意的是,结构体赋值时是按值传递的,即会将结构体中的所有成员的值都复制给目标结构体。如果结构体中包含指针或数组,赋值时只会复制指针或数组的地址,而不是它们指向的数据。如果需要深拷贝(即复制指针指向的数据),需要额外处理