/* Output: struct size = 12 flag = a message = efghi Desired Output: struct size = 6 flag = a message = bcdef */ #include typedef struct { unsigned char flag; union { struct { int address; unsigned char data[1]; } nvm; char message[5]; } payload; } packet_t; int main(int argc, char *argv[]) { packet_t *p; char d[] = "abcdefghijklmnopqrstuvwxyz"; p = (packet_t*)d; printf("struct size = %d\n", sizeof(packet_t)); printf("flag = %c\n", p->flag); printf("message = %c%c%c%c%c\n", p->payload.message[0], p->payload.message[1], p->payload.message[2], p->payload.message[3], p->payload.message[4]); return(0); }