【C】结构体赋值

结构体赋值

 C 语言的结构体部分初始化规则:当使用指定成员初始化(designated initializer)时,未初始化的成员会自动初始化为 0

也就是说:

struct readahead_control rac = {
    .file = f,
    .mapping = m,
    ._index = i,
};

等价于:

struct readahead_control rac;
rac.file = f;
rac.mapping = m;
rac._index = i;
rac._nr_pages = 0;
rac._batch_count = 0;

 

例如:

#include <stdio.h>
#include <string.h>

struct Inner {
    int x;
    char name[20];
};

struct Outer {
    int id;
    struct Inner inner;
};

初始化赋值(定义时):

struct Outer o1 = {
    .id = 1,
    .inner = {
        .x = 100,
        .name = "test"
    }
};

定义后分步赋值:

struct Outer o2;

o2.id = 2;
o2.inner.x = 200;
strcpy(o2.inner.name, "hello");

结构体可以直接整体赋值(同类型结构体):

struct Outer o3 = {3, {300, "world"}};
struct Outer o4;

o4 = o3;  // 整体赋值

✅ C语言允许结构体之间整体复制,编译器会自动拷贝每个成员。

 

posted @ 2025-11-03 21:53  苏格拉底的落泪  阅读(56)  评论(0)    收藏  举报