结构体赋值

在C语言中,结构体赋值可以通过以下几种方式进行:

  1. 逐个成员赋值
struct Person {
    char name;
    int age;
};

struct Person p1strcpy(p1.name, "John");
p1.age = 25
  1. 使用花括号直接赋值
struct Person p1 = {"John", 25};
  1. 复制赋值
struct Person p1 = {"John", 25};
struct Person p2p2 = p1; // 将p1的值复制给p2
  1. 结构体数组的赋值
struct Person people = {{"John", 25}, {"Alice", 30}};
  1. 结构体作为参数时赋值
void assignStruct(struct Person *p) {
    p->name = "Alice";
    p->age = 20;
}

struct Person p1 = {"John", 25};
assignStruct(&p1);
  1. 结构体字面量赋值
struct Person p1 = {.name = "Alice", .age = 20};

需要注意的是,结构体赋值时是按值传递的,即会将结构体中的所有成员的值都复制给目标结构体。如果结构体中包含指针或数组,赋值时只会复制指针或数组的地址,而不是它们指向的数据。如果需要深拷贝(即复制指针指向的数据),需要额外处理

Top