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

前端之家收集整理的这篇文章主要介绍了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++相关文章