结构体进阶篇
结构体声明
结构体是不同类型变量的集合,数组是相同类型变量的集合。
特殊的结构体声明(匿名结构体类型)
匿名结构体只能在结构体声明尾处一次性创建结构体变量。后面再用相同的结构体声明再创建,编译器依然会把他们当成不一样的类型。
上述创建的x变量和p结构体指针 p = &x的操作会报警告,因为编译器会把他们当成不一样的类型。
结构体的自引用
结构体内存对齐
用来节省时间,增加性能。
结构体的内存对齐规则
GCC编译器上无默认对齐数,只有VS才有默认对齐数8。
offsetof()返回值是结构体变量当中的某个结构体成员的偏移量
头文件#include <stddef.h>
修改默认对齐数的方法
#pragma()
实例
修改默认对齐数可以更好的节省创建结构体变量所占内存。
结构体传参
位段
用来节省内存
位段是通过结构体来实现的
位段的成员必须是整型家族(char short int long longlong)
位段的内存分配
实例:位段的书写