2014-11-06 75 views
-4

我運行下面的代碼,我得到了有人可以解釋我們如何計算結構成員的地址嗎?

0x106879018

0x106879030

我真的不明白我們是如何得到這個地址。如果我們有6個整數..這是24個字節.. 但我不知道該去哪裏。

我將非常感謝您的幫助!

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


int main(){ 

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

} 
+0

這是十六進制。 – 2014-11-06 23:37:31

+0

0x106879030 - 0x106879018 *是* 24.究竟是什麼讓你感到困惑? – 2014-11-06 23:37:44

+0

@remyabel是的,什麼?我不知道如何24個字節轉換爲十六進制答案... – UserMoon 2014-11-06 23:38:07

回答

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; 
相關問題