kri*_*rav 22 c struct pointers
((struct name*)0) - > member)在C中做什么?
我遇到的实际C语句是这样的:
(char *) &((struct name *)0)->member)
Run Code Online (Sandbox Code Playgroud)
das*_*ght 25
这是获取被struct调用成员的偏移量的技巧member.这种方法背后的想法是让编译器计算member假设结构本身位于地址零的地址.
使用offsetof提供了一种更易读的语法替代方法:
size_t offset = offsetof(struct name, member);
Run Code Online (Sandbox Code Playgroud)
(struct name *)0正在0转向指针struct name.
&((struct name *)0)->member)得到会员的地址member.
(char *) &((struct name *)0)->member)将该地址转换为char *.
如果有人认为上面的表达式是解引用NULL指针,那么请注意这里没有解除引用.这一切都是为了获得会员的地址number.
(struct name*)0 给你一个结构指针.
((struct name*)0)->member 为您提供指针指向的结构的成员.
添加&为您提供该成员的地址,最后
(char *) 是将获取的地址强制转换为char指针.
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |