C标准对结构体及其第一个成员的指针有什么看法?
发布时间:2020-12-16 05:19:19 所属栏目:百科 来源:网络整理
导读:考虑以下两个结构: struct a{ int a;};struct b{ struct a a_struct; int b;}; 以下实例化结构b: struct b b_struct; 这个条件: if (b_struct == (struct b*)b_struct.a_struct) printf("Yesn"); C标准是否要求这样做总是评估真实? 解决方法 是的,根据6
考虑以下两个结构:
struct a { int a; }; struct b { struct a a_struct; int b; }; 以下实例化结构b: struct b b_struct; 这个条件: if (&b_struct == (struct b*)&b_struct.a_struct) printf("Yesn"); C标准是否要求这样做总是评估真实? 解决方法
是的,根据6.7.2.1,“在一个结构对象中,非位域成员和位字段所在的单元具有按它们被声明的顺序增加的地址,指向结构对象的指针,指向其初始成员(或者该成员是位字段,然后是其所在单位),反之亦然.在结构对象中可能存在未命名的填充,但不在开始.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |