c/c++取结构体指定成员的偏移,及原理解析

清泛原创

可以使用std标准函数 offsetof(),在stddef.h头文件中,实现原理如下(模拟系统的实现):

#define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))
原理如下:
1、0即空指针转换结构体空指针。
2、拿结构体中的指定成员的地址即为我们要找的偏移,因为首地址为空,因此成员地址相对0来说即为相对偏移。

offsetof

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部