gpt4 book ai didi

c - 结构偏移宏

转载 作者:行者123 更新时间:2023-11-30 18:59:07 26 4
gpt4 key购买 nike

Possible Duplicate:
Why does this C code work?

我确实看到定义了一个宏来计算结构偏移,如下所示

#define offsetof(st, m) ((size_t)(&((st *)0)->m))

但我不明白这个定义是如何运作的。看起来结构的成员是通过 NULL 访问的指针。谁能详细说明一下这个表达式是如何工作的?

最佳答案

1) 首先创建一个指向“st”类型结构的空指针:(st *)0

2) 接下来获取该结构的成员:->m

3) 接下来获取成员的地址:&(...)

4) 最后将成员的地址转换为 size-t 类型:(size_t)(...)

工作发生在第 3 步,因为指针为空(即地址 == 0),则成员的地址仅包含结构内的成员位置。

关于c - 结构偏移宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com