考慮一個具有兩個整數類型成員的結構。我想通過地址獲得兩位成員。我可以成功獲得第一名,但第二名我得到錯誤的價值。我相信這是垃圾價值。這裏是我的代碼:通過地址訪問結構成員
#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