문제의 코드입니다C 포인터 산술는 sizeof (구조체) 여기
#include <stdio.h>
struct test {
unsigned char t;
unsigned short u;
unsigned char v;
};
int main()
{
struct test * a = (void *) 0x1000;
printf("%x %p %p\n",
sizeof(struct test),
a + sizeof(struct test),
a - sizeof(struct test));
return 0;
}
sizeof의 (구조체 테스트) 6 인쇄, 그래서 나는 볼을 기대 :
6 0xffa 0x1006
대신 내가 얻을
6 0x1024 0xfdc
지난 시간 I c 0x24, 또는 36은 여섯과 같지 않았습니다. 내가 말할 수있는 어떤 것과조차 일치하지 않습니다. 나는 완전한 상실감에 처해있다.
누군가이 값을 얻는 이유를 설명해 줄 수 있습니까?
'* (a + x)'가'a [x]'와 같거나'(a + x)'가'& a [x]'와 같다고 말하고 싶을 것입니다. –