C语言offsetof宏实现

offsetof是一个宏,它不是函数。
下面的图是offsetof的宏定义

在这里插入图片描述

**offsetof括号里有两个参数,一个是结构体的类型,一个是结构体里面的成员
(size_t)其实就是unsigned int类型, s 是结构体类型,s *是结构体指针,
(s *)0就是把常量0强制转换为结构体的首地址,相当于把结构体中第

一个成员的地址假设为0.此时结构体的第一个成员的地址其实就是结

构体的首地址,(s *)0)->m就是访问结构体里面的成员,之后用&把成

员的地址取出来,再把取出来的地址强制转换为int型,就得到了每个成员的偏移量。**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值