Đây là mã trong câu hỏiC Pointer Arithmetic sizeof (struct)
#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;
}
Các sizeof (thử nghiệm struct) in 6, vì vậy tôi sẽ mong đợi để xem:
6 0xffa 0x1006
Thay vào đó, tôi nhận được
6 0x1024 0xfdc
Thời gian qua tôi c hecked, 0x24, hoặc 36, không bằng 6. Nó thậm chí không liên kết với bất cứ điều gì mà tôi có thể nói. Tôi đang thua lỗ hoàn toàn.
Ai đó có thể giải thích cho tôi lý do tôi nhận được các giá trị này không?
Bạn có thể muốn nói rằng '* (a + x)' giống với 'a [x]' hoặc '(a + x)' giống với '& a [x]'. –