8.2 Unions

-----------

Unions can be used at any time to store values of different types in

one object.

The memory reserved for a union is determined by the size of the

longest member of the union. All the members of the union are located in

the same memory area at the same address. The value of a current union

member is lost when a value is assigned to another union member.

In C-- there are so-called anonymous unions, which have no assigned

name. Their members are addressed the same way as ordinary variables. For

example:

union

dword regEAX;

word regAX;

byte regAL;

}; // have declared that 3 variable are located on one and same

// physical address

declare three variables at the same physical address

void test()

{

regEAX = 0x2C;

BL = regAL; //importance 0x2C will turn out to be in register BL

}

value 0x2C assigned to register BL

You can make unions of different variable types, arrays, string

variables or structures. Unions may be global or local, and can even be

found inside a structure (but at present structures cannot be used inside

structures). Global unions can be initialized or uninitialized. An

initialized union can be obtained by simply initializing the first member

of the union. If the first member is not initialized but the next ones are,

this will produce an error message.