Hola!!!!!!!!!!!!
La respuesta es que depende de como el compilador alinea todo en memoria. Esa es la diferencia. Fijate que si tenes un struct con un char y un int "supuestamente" (digo supuestamente porque depende de la plataforma en la cual estes trabajando) el int ocupa 4 bytes y el char ocupa 1 byte, pero el sizeof del struct seguramente te dara 8 bytes. Bueno, es debido a como se alinea en memoria.
Salu2!!!!