【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语言允许结构体之间整体复制,编译器会自动拷贝每个成员。

浙公网安备 33010602011771号