Wenn ich erklären eine Union:Woher weiß man, welche Variable aus Union verwendet wird?
union TestUnion
{
struct
{
unsigned int Num;
unsigned char Name[5];
}TestStruct;
unsigned char Total[7];
};
Nun, wie kann ich wissen, dass, ob Summe [7] verwendet wird oder TestStruct verwendet wird?
Ich benutze C! Ich besuchte Gewerkschaften und Strukturen und diese Frage kam mir in den Sinn. "sizeof
" kann nicht verwendet werden, da beide von gleicher Größe sind, d.h. 7 Bytes. (Und hier kommt eine andere Frage)
Wenn ich nur "Total" mit einem Zeichen "a" und versuchte sizeof(TestUnionInstance)
, gab es 12 zurück (Größe von Char ist 1 Byte, oder?). Also habe ich die Struktur isoliert und festgestellt, dass die Größe der Struktur 12 Byte und nicht 5 + 2 = 7 Byte beträgt. Seltsam !! Jeder kann das erklären ??
P.S. Ich verwende Visual Studio 2008.
ein besonderer Dank für "Padding Part" .... Ich wusste das nicht !! Groß!! – Swanand
Das Padding kommt nach dem 'char', nicht vorher. Streng genommen könnte eine Implementierung * Padding davor setzen, aber dann müsste sie auch die gleiche Menge Padding davor setzen, wenn man von 'char [5]' nach 'char [6]' wechselt, was ziemlich unsinnig wäre . C erfordert Strukturen mit einer gemeinsamen anfänglichen Sequenz von Elementen, die kompatibel sind. –