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


#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的地址。

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

无符号整形。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM