Вы правы. Память перезаписана , поскольку все элементы занимают одинаковое пространство. Взгляните на это:
union foo{
int i;
char[4] carr;
};
Предполагая, что целое число равно 4 байта, а char равно 1 байту, при изменении целого числа все четыре элемента массива char будут изменены.
Я бы настоятельно рекомендовал написать свой собственный небольшой код (с соответствующими printf
s), чтобы понять работу объединения. Так ты научишься быстрее.