在c语言中一般用序号或者指针来进行操作。
比如
int a[4]//4个int类型的变量 数组。本来按偏 移量。
a-----------------a[0]
+4---------------a[1]
+4---------------a[2]
+4--------------a[3]
也可以用指针 int *p =a
那么就是
a------------p
+4 --------p+1
+4 --------p+2
+4---------p+3
#include <stddef.h> // 导入头文件<stddef.h>#define offsetof(type, member) // 里面自带宏定义offsetof
// type填写结构体类型,member填写成员名称,返回内存偏移量,类型为size_t
// 举例如下
typedef struct { int a, b, c } struct_t
// 假设在32位机,结构间无空隙
offsetof(struct_t, a) // 值为 0,相对于整个结构体,无内存偏移量
offsetof(struct_t, b) // 值为 4,相对于整个结构体,4字节内存偏移量
offsetof(struct_t, c) // 值为 8,相对于整个结构体,8字节内存偏移量
// 示例offsetof底层实现原理(不一定通用)
#define offsetof(t, m) (size_t)(&(((t *)0)->m))