以下代碼:印刷內容給出意想不到的結果
#include <stdio.h>
#include <stdlib.h>
typedef struct mytype {
int x; int y; int z;
} mytype;
int main()
{
mytype* p = (mytype*)4;
void* pp = &(p->x);
printf("%d\n",(int)pp);
}
打印「4」如預期。
但如果我更改線路:
void* pp = &(p->x);
要:
void* pp = &(p->y);
它打印出 「8」。另外,如果我將其更改爲p-> z,則會打印「12」。
這是爲什麼?
恭喜。您已經重新定義了['offsetof'](http://en.wikipedia.org/wiki/Offsetof)宏(附加偏移量爲4)。 – anishsane
雖然我有點好奇。你期待什麼結果? –