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

来源:清泛原创     2020-10-30 13:50:18    人气:     我有话说( 0 人参与)

清泛网(www.tsingfun.com):可以使用std标准函数 offsetof(),在stddef h头文件中,实现原理如下(模拟系统的实现): define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))原理如下:1、0即空指

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

#define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))

原理如下:

1、0即空指针转换结构体空指针。

2、拿结构体中的指定成员的地址即为我们要找的偏移,因为首地址为空,因此成员地址相对0来说即为相对偏移。

offsetof

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: