有人可以解释我们如何计算结构成员的地址吗?

时间:2014-11-06 23:34:33

标签: c

我运行以下代码,我得到了

0x106879018

0x106879030

我真的不明白我们是如何得到这个地址的。如果我们有6个整数..这是24个字节.. 但我不知道该去哪里。

我真的很感谢你的帮助!

struct one{
    int x[6];
    short y[12];
}a;


int main(){

    printf("%p \n", &a);
    printf("%p \n", &a.y);

}

1 个答案:

答案 0 :(得分:4)

1)这是算术:

0x10687903016 - 0x10687901816 = 0x1816 == 2410

2)这是布局:

struct one{
    int x[6];     // bytes 0..23 (24 bytes)
    short y[12];  // bytes 24 .. 47 (next 24 bytes)
}a;