Арифметика указателя C 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;
}

sizeof (struct test) печатает 6, поэтому я ожидал, что увидит:

6 0xffa 0x1006

Вместо этого я получаю

6 0x1024 0xfdc

В прошлый раз, когда я проверил, 0x24 или 36 не было равно 6. Это даже не совпадает ни с чем, что я могу сказать. Я в полной растерянности.

Кто-нибудь, пожалуйста, объясните мне, почему я получаю эти значения?

7
задан endeavormac 15 December 2011 в 04:44
поделиться