c – 为什么班级成员的地址与他们的对象相同?

在下列情况下,每个成员都有不同的名称或实体,为什么他们的地址相同?

struct B { int x; };
struct A { B b; };

int main()
{
    A obj;
    cout << &obj.b.x << endl;
    cout << &obj.b << endl;
    cout << &obj << endl;
}
因为指向结构的指针总是指向它的第一个成员(因为结构是按顺序排列的).

In C, does a pointer to a structure always point to its first member?

(C1x §6.7.2.1.13: “A pointer to a structure object, suitably
converted, points to its initial member … and vice versa. There may
be unnamed padding within as structure object, but not at its
beginning.”)

注意:mange指出,理所当然,如果你开始向结构中添加虚函数,C通过在结构的开头添加vtable来实现这个…这使得我的语句(对于C来说是真的)在你的时候是错误的谈谈你在C中用’结构’做的一切.

相关文章
相关标签/搜索