蜀山缥缈录女捏脸数据:内核链边表的实现原理#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
来源:百度文库 编辑:中财网 时间:2024/04/27 14:16:14
郭炎强 09:18:57 上午
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
先分析一下这个 宏的运行机理:
一共4步
1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;
2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;
3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 这个实现相当于获取到了 MEMBER 成员相对于其所在结构体的偏移,也就是其在对应结构体中的什么位置。
4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型。巧妙之处在于将0转 换成(TYPE*),结构以内存空间首地址0作为起始地址,则成员地址自然为偏移地址;
&操作如果是对一个表达式,而不是一个标识符,会取消操作,而不是添加。
比如&*a,会直接把a的地址求出来,不会访问*a。
&a->member,会把访问a->member的操作取消,只会计算出a->member的地址。
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
先分析一下这个 宏的运行机理:
一共4步
1. ( (TYPE *)0 ) 将零转型为TYPE类型指针;
2. ((TYPE *)0)->MEMBER 访问结构中的数据成员;
3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 这个实现相当于获取到了 MEMBER 成员相对于其所在结构体的偏移,也就是其在对应结构体中的什么位置。
4.(size_t)(&(((TYPE*)0)->MEMBER))结果转换类型。巧妙之处在于将0转 换成(TYPE*),结构以内存空间首地址0作为起始地址,则成员地址自然为偏移地址;
&操作如果是对一个表达式,而不是一个标识符,会取消操作,而不是添加。
比如&*a,会直接把a的地址求出来,不会访问*a。
&a->member,会把访问a->member的操作取消,只会计算出a->member的地址。
视频点播的实现原理
BT的实现原理
define的意义
双内核cpu工作原理
TOF(Time of Light) 的原理是什么?
哪里可以买到william stallings 操作系统内核与设计原理一书的习题解
谁有操作系统-内核与设计原理的课后答案
www服务的实现原理是什么?
三层交换机第三层实现的原理
VOIP的原理及实现在必要条件
脱机网页是什么意思,什么原理实现的
无法响应的原理与实现??
彩铃是怎么实现的,什么原理?
凸轮机构实现锁定的原理
英语define 的中文意思是什么?
路由器第三层实现的原理,与交换机第三层的实现原理有何不同?
什么是CPU的内核??
CPU的内核是什么?
IE的内核是什么?
什么是操作系统的内核!
操作系统的内核
文曲星nc2000c的内核
弹出广告的原理是利用浏览器的IE内核来调用IE窗口[电脑高手进啊]
QQ实现原理