计算结构体内元素的偏移量宏

#define offsetof(type,member) ((size_t) &((type *)0)->member)

该宏定义含义为:在不生成结构体实例的情况下计算结构体成员的偏移量。

一:结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量

二:#define offsetof(type,member) ((size_t) &((type *)0xff)->member-0xff):这里假设type类结构体的

基地址为0xff,则成员变量number的地址为:0xff+sizeof((type*)->number),成员变量number的偏移量

为成员变量的地址减去结构体的基地址:所以成员变量number的偏移量为((type *)0xff)->member-0xff。

(type*)0:这个结构体变量的基址就是0。所以结构体成员变量的地址的大小在数值上就等于该结构体

成员在结构体中的偏移量。

三:(type*)0:将0地址转换为type*结构体指针。

四:(type *)0)->member:指向type*结构体的成员变量number。

五:&((type *)0)->member:取成员变量number的地址。

扫描二维码关注公众号,回复: 9861421 查看本文章

六: ((size_t) &((type *)0)->member):将成员变量number的地址转换为size_t类型。可以知道size_t是

无符号整形。

猜你喜欢

转载自www.cnblogs.com/ligei/p/12502971.html