本文共 1271 字,大约阅读时间需要 4 分钟。
结构体是C语言中的内置数据类型,用于将多个数据项(成员)以一定格式组合在一起,便于管理和操作。
1. 普通结构体
结构体的默认内存对齐规则:第一个成员不需要对齐,后续成员对齐到字节的 vám整数倍。示例:
struct tag{ member-list; } variable-list; 2. 匿名结构体
匿名结构体用于增强代码可读性,但不能赋值给变量。示例:
struct{ int a; char b; float c; } x; 结构体可以包含自身指针,实现复杂的数据结构。
示例:
struct Node{ int data; struct Node * next; } Node; 1. 普通结构体
结构体变量的定义与初始化方式多样,可以在定义时或初始化时指定具体值。示例:
struct Point{ int x; int y; }; struct Point p1; // 定义结构体变量 struct Point p3 = {2, 3}; // 初始化结构体变量 2. 嵌套结构体
嵌套结构体可以实现更复杂的数据结构,需注意对齐规则。示例:
{ "Node": { "data": 10, "p": { "x": 4, "y": 5 }, "next": null }} 内存对齐是为了满足硬件平台和访问效率的需求。
由于硬件指令处理的地址空间大小限制,内存对齐可以减少 cpu 访问的次数,提高程序运行效率。
位段允许将一块内存空间划分为多个数据段,常用于操作系统和设备驱动。
int、unsigned int 或 signed int。枚举用于定义一组常量,默认从 0 开始依次递增。
联合允许多个数据项共享同一块内存空间,实例:
struct Un{ int i; char c; }; struct Un un; un.c = 1; printf("%d\n", un.i); #includeint main(){ union Un{ int i; char c; } un; un.i = 1; printf("%d\n", un.c); return 0; }
转载地址:http://dezpz.baihongyu.com/