#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是
無符號整形。
