以下代码:
#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”。
这是为什么?