C标准对结构体及其第一个成员的指针有什么看法?

C标准对结构体及其第一个成员的指针有什么看法?,第1张

概述考虑以下两个结构: 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("Yes\n"); C标准是否要求这样做总是 考虑以下两个结构:
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("Yes\n");

C标准是否要求这样做总是评估真实?

解决方法 是的,根据6.7.2.1,“在一个结构对象中,非位域成员和位字段所在的单元具有按它们被声明的顺序增加的地址,指向结构对象的指针,指向其初始成员(或者该成员是位字段,然后是其所在单位),反之亦然.在结构对象中可能存在未命名的填充,但不在开始. 总结

以上是内存溢出为你收集整理的C标准对结构体及其第一个成员的指针有什么看法?全部内容,希望文章能够帮你解决C标准对结构体及其第一个成员的指针有什么看法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存