如何求出C语言结构体中各个成员的大小及内存偏移量

2025-05-13 05:23:58
推荐回答(1个)
回答(1):

#include                 // 导入头文件


#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))