Если я объявляю Союз как:
union TestUnion
{
struct
{
unsigned int Num;
unsigned char Name[5];
}TestStruct;
unsigned char Total[7];
};
Теперь, откуда я могу узнать, используется ли Total [7] или используется TestStruct?
Я использую C!
Я пересматривал союзы и структуры, и этот вопрос пришел мне на ум.
"sizeof
" не может использоваться, поскольку оба имеют одинаковый размер, т.е. 7 байтов. (И вот еще один вопрос)
Когда я заполнил только "Total" символом "a" и пробовал sizeof(TestUnionInstance)
, он вернул 12 (размер Char равен 1 байт, правильно?). Поэтому я выделил структуру из нее и обнаружил, что размер структуры составляет 12 байт, а не 5 + 2 = 7 байт.... Странно!!
Кто-нибудь может объяснить?
P.S. Я использую Visual Studio 2008.