C语言offsetof宏

开头

大家好,我叫这是我58。今天,我们要学一下关于C语言中的offsetof宏的知识。

1.什么是offsetof宏?

offsetof宏,来自于stddef.h头文件,用来返回某一个结构体中的成员变量的偏移量,它的内部结构是这样子的:offsetof (type,member)1,而它的内部是这样子的:((size_t)&(((type*)0)->member)),其中,type代表了某一个结构体,而member则代表了这个结构体中的某一个成员变量,而且,这个宏的返回值的类型是size_t,因为某一个结构体中的第一个成员变量的偏移量一定为0,第二个成员变量的偏移量一定会比第一个成员变量的偏移量多一点,以此类推,不可能出现结构体得成员变量的偏移量为负数的情况,所以,这个宏的返回值的类型是size_t,而如果把type代入某一个结构体,member代入另一个结构体的成员变量,就会报错,因为这个宏不能跨结构体来求出偏移量,在看到这里之后,接下来就要讲一下offsetof宏的实际应用了。

2.offsetof宏的实际应用(这里只列举其一)

求结构体a中的所有成员变量的偏移量

union as {
	int ia;
	long long l;
};
struct a {
	int i;
	char y;
	union as a;
};
int main() {
	printf("%d %d %d\n", offsetof(struct a, i), offsetof(struct a, y), offsetof(struct a, a));
	return 0;
}

……

结尾

看到这里了,可以评论来互动一下我哦。


  1. 选自C语言中offsetof宏的简介 ↩︎

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值