Ecco il codice in questioneC aritmetica dei puntatori 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;
}
Il sizeof (test struct) stampa 6, quindi vorrei aspetterebbe di vedere:
6 0xffa 0x1006
Invece ottengo
6 0x1024 0xfdc
Ultima volta che c hecked, 0x24 o 36, non era uguale a 6. Non è nemmeno allineato a nulla che io possa dire. Sono a una perdita completa.
Qualcuno può spiegarmi perché sto ottenendo questi valori?
Probabilmente si vuole dire che '* (a + x)' è uguale a 'a [x]' o che '(a + x)' è uguale a '& a [x]'. –