社区
C语言
帖子详情
前一阵子百度来校园招聘时的一道笔试题
xlbdan
2007-09-25 11:52:35
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))->MEMBER
问这个宏是什么意思?
...全文
1116
19
打赏
收藏
前一阵子百度来校园招聘时的一道笔试题
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))->MEMBER 问这个宏是什么意思?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
InsideKernel
2008-04-09
打赏
举报
回复
在stddef.h中有类似定义,如下:
#define offsetof(s,m) (size_t)&(((s *)0)->m)
(s *)0
的意思就是指从这个结构体变量是从0地址开始的;
&(((s *)0)->m)
取该结构体变量(首地址是0)m成员的地址;
返回的结果是m在结构体中的偏移(以字节为单位)。
zzyjsjcom
2008-04-01
打赏
举报
回复
这个宏在使用的过程中 要用字节指针:
下面有个测试代码 , 你可以跑跑看:
#define offset(TYPE,MEMBER) ((size_t)(&((TYPE *)0)->MEMBER))
typedef struct t_tag
{
int a;
int b;
int c;
}t;
int main()
{
t test;
unsigned char *pt = (unsigned char *)&test;
int move = offset(t, c);
test.a = 3;
test.b = 4;
test.c = 5;
printf("%d ", *((int *)pt));
pt = pt + move;
printf("%d", *((int *)pt));
return 0;
}
运行结果 :3 5
qld001
2007-09-26
打赏
举报
回复
flyerwing()
很深了,学校是搞不到那个级别吧!
hjzwl1018()
狠了去了```这些东西哪能学到?这些属于哪块编程?
=========================================================================
自学!大学期间不能指望学校教你所有东西,要学会自己找食吃!
xlbdan
2007-09-26
打赏
举报
回复
sxlengwa的解释挺好的,不过我当时没抄下来,现在印象中就是我写的那样的,当时也没弄出来...
flyerwing
2007-09-26
打赏
举报
回复
很深了,学校是搞不到那个级别吧!
hjzwl1018
2007-09-26
打赏
举报
回复
狠了去了```这些东西哪能学到?这些属于哪块编程?
NKLoveRene
2007-09-25
打赏
举报
回复
看来baidu到哪都用一套题啊
所以笔试前先在网上搜搜看有没有今年的笔试题出来,呵呵
Treazy
2007-09-25
打赏
举报
回复
我关心的是表达式中的0
求偏移那显而易见
关键这个0难道不能让大家想到些什么吗?
我能想到的就是
我上面提到的选择入口函数!
珍惜生命远离CPP
2007-09-25
打赏
举报
回复
C库 宏 offsetof
lbaby
2007-09-25
打赏
举报
回复
member 在type中偏移量= member 的地址 - type地址
如果直接设type地址为0的话,那么member的地址就是偏移量了
Treazy
2007-09-25
打赏
举报
回复
oo(为了名副其实,努力学习oo技术ing) ( ) 信誉:110 2007-09-25 12:03:15 得分: 0
求member在struct中的偏移
-----------------------------------
求偏移是这个宏嘛?难道看offset就清楚了?
还请给予解释!
Treazy
2007-09-25
打赏
举报
回复
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))->MEMBER
-------------------------------------
看表达式MEMBER应该是TYPE的成员
将0强制转换为指向为类型为TYPE的指针
并将类型size_t与上此指针,并将结果指向其成员MEMBER
猜想,在0入口开始应该是很多函数入口的指针,用这个宏可以强制从指定入口开始
执行程序。当然这里只是选择哪个成员。
oo
2007-09-25
打赏
举报
回复
求member在struct中的偏移
sxlengwa
2007-09-25
打赏
举报
回复
#define offset(TYPE,MEMBER) (size_t)(&((TYPE*)0)->MEMBER)
写成这样要好点
那个不是与,失去地址,然后强制转换为 size_t 类型
hunter0022
2007-09-25
打赏
举报
回复
应该是这样就好理解了:(size_t) & ((TYPE*)0)->MEMBER
随后就像楼上的几位兄弟说的,通过偏移取成员再取地址,得其偏移。
当然也可以把0改成任意的数。只不过要将偏移的结果减去这个数。
hunter0022
2007-09-25
打赏
举报
回复
hi,楼主,你看你的宏是不是抄错了呀?size_t是一种类型,怎么可能和一个东西去&呢?
manrenmanren
2007-09-25
打赏
举报
回复
你好像写错了 应该是这样的吧
#define offset(TYPE,MEMBER) (size_t) & (((TYPE*)0))->MEMBER
我啃
2007-09-25
打赏
举报
回复
offsetof
you can find the useful macro in the cstddef
get the offset of a certain filed in the struct
原来百度就这种水平?
lianhd
2007-09-25
打赏
举报
回复
你要是稍微看过一点Linux内核代码, 就明白了呵呵
2014
校园
招聘
_
百度
2014
校园
招聘
1、
百度
2014
校园
招聘
简介:
百度
(Nasdaq 简称:BIDU) 是全球最大的中文搜索引擎,2000年1 月由李彦宏、徐勇两人 创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“
百度
”二字源于 中国宋朝词人辛弃疾的《青玉案》诗句:“众里寻他千
百度
”,象征着
百度
对中文信息检索技 术的执著追求。
百度
拥有数千名研发工程师,这是中国乃至全球最为优秀的技术团队,这支队
2014
校园
招聘
_腾讯2014
校园
招聘
目录: 1、腾讯201 4
校园
招聘
简介 2、讯
招聘
常见问题解答 3、腾讯职业发展&薪酬待遇 4、腾讯
校园
招聘
笔试经验 4.1 腾讯用户研究/ 交互设计
笔试题
目回忆版(杭州)-2012.10.17 4.2 腾讯广州场笔经-2012.10.8 4.3 腾讯西安笔经-2012.9.25 4.4 腾讯2013软件开发笔试真题 4.5 腾讯产品笔经(广州)-2013.
【2015-18年腾讯
招聘
】腾讯产品策划类笔试面试题整理
腾讯产品策划类
笔试题
1、列出腾讯的十款产品和竞争对手的产品,并选一款对其作出评价看,说出他的优点和缺点,并提出你的改进之处. QQ 旋风VS 迅雷7 QQ 音乐VS 酷狗 腾讯微博 VS 新浪微博 ...
【24届】浦发银行2024年度
校园
招聘
正式启动!
两个公司本菜鸟了解的大概情况如下:中联重科,国有混合制企业,base长沙,岗位是结构工程师,总包15w税前,加班没有加班工资,而。投的机器学习方向,上来三道不定项选择题,然后四道算法题;24届计算机系的,没有实习过,目前手里有一个正式工的offer但是各方面都不满意,还有一个规模还行的公司发的实习offer,求问:现在是去实习等春招投递正式工作。因为是前插,所以遍历
时
要找到下一个节点值为x的节点,用cur记录下来,然后p指向新插入的节点,新插入的节点再指向p的next,同
时
要注意处理尾节点插入的状况,直。
24届中国人寿科技金融岗(JAVA开发)笔试+面试经验
大家都好热情,说话又好听,一开口就有人贴心地替我陈述观点,让我获得了咳嗽清嗓子的机会,半小
时
下来喉咙清爽极了,太贴心辣!
百度
前端社招三轮技术面过了,今天和HRBP面,问了我期望薪资,预计入职
时
间这些就不问了,然后具体的薪资组成和福利待遇都是我自己问的,是不是凉了,有点慌啊,
百度
的。来了三个人面试,一个年轻的小姐姐是主持人,一个是接近4。9.13笔试,10.11一面,10.16二面,10.24三面,11.07 hr面,然后直接谈薪,可以接受就直接发带薪offer,跳过了意向部门是安全产品啥的,b。
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章