Skip to content

C 结构体(struct)

结构体将不同类型的数据组合在一起,常用于建模实体、复合数据与抽象数据类型。

1. 定义与初始化

c
struct Point { int x; int y; };
struct Point p1 = { .x = 3, .y = 4 }; // 指定初始化(C99)

2. 访问与嵌套

c
struct Rect { struct Point a, b; };
struct Rect r = { {0,0}, {10,5} };
printf("%d\n", r.b.x);

3. 指针与 -> 运算符

c
struct Point *pp = &p1;
printf("%d\n", pp->y);

4. typedef 简化

c
typedef struct { int year, month, day; } Date;
Date d = {2025,9,1};

5. 对齐与填充

  • 结构体成员按其对齐要求插入填充字节,影响 sizeof
  • 可通过重排成员减少填充

6. 赋值与比较

  • 结构体可以整体赋值/传参/返回
  • 比较需逐成员比较(不可直接 ==

7. 位域(见专章)与灵活数组成员

c
struct Packet {
    unsigned short len;
    unsigned char data[]; // C99 可变尾随数组
};

8. 小结

结构体是建模与抽象的基础,理解对齐、指针访问与整体赋值规则尤为重要。

本站内容仅供学习和研究使用。