Aquí está el código en cuestiónC Aritmética de punteros 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;
}
El sizeof (test struct) imprime 6, por lo que sería esperar para ver:
6 0xffa 0x1006
En vez consigo
6 0x1024 0xfdc
última vez Ic Heck, 0x24 o 36, no era igual a 6. Ni siquiera está alineado con nada que yo pueda decir. Estoy en una pérdida completa.
¿Puede alguien explicarme por qué obtengo estos valores?
Probablemente quiera decir que '* (a + x)' es lo mismo que 'a [x]' o que '(a + x)' es lo mismo que '& a [x]'. –