考虑一个具有两个整数类型成员的结构。我想通过地址获得两位成员。我可以成功获得第一名,但第二名我得到错误的价值。我相信这是垃圾价值。这里是我的代码:通过地址访问结构成员
#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
@ t0mm13b:目的 - 学习.. – Jack