【发布时间】:2012-12-31 03:05:28
【问题描述】:
考虑一个具有两个整数类型成员的结构。我想通过地址获取两个成员。我可以成功获得第一个,但第二个我得到了错误的值。我相信这是垃圾价值。这是我的代码:
#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 = f.a;那样在int a的声明中这样做?您正在“访问结构”,就好像它是分配的内存一样,但显然您不是! -
@t0mm13b: 目的学习..