you declare the union, define a pointer to the type and initialise it with the address
Code:
typedef union
{
unsigned long int value;
char xch[2];
} TempData;
TempData *ptr= (TempData* )0x1234;
what happens if you use the pointer to access the object pointed to depends on the system you are using and if the pointer holds a valid address, e.g.
Code:
ptr->value=1;
if the pointer does not hold a valid address you could get an exception, address error, segmentation error, etc or it may appear to work corrupting memory contents and possibly causing a crash later.