考虑一个具有两个整数成员的结构体。 我想通过地址获取这两个成员。 我可以成功获取第一个成员,但是我在获取第二个成员时得到了错误的值。 我相信这是垃圾值。 这是我的代码:
#include <stdio.h>
typedef struct { int a; int b; } foo_t;
int main(int argc, char **argv)
{
foo_t f;
f.a = 2;
f.b = 4;
int a = ((int)(*(int*) &f));
int b = ((int)(*(((int*)(&f + sizeof(int))))));
printf("%d ..%d\n", a, b);
return 0;
}
我得到的是:
2 ..1
有人可以解释一下我错在哪里吗?
int a
时不这样做,像这样:int a = f.a;
?你似乎在“访问结构体”,就好像它是分配的内存,但很明显你并没有! - t0mm13b