Martin Mortensens kodeeksempler


home


C++


C++ eksempler


Begreb/beskrivelse

Kodeeksempler

Union

Union kan bruges til at opfatte en mængde bits forskelligt. Fx at opfatte dem enten som integer eller floating points.

Dette kan fx bruges hvis man vil gemme en pointeradresse i et floatarray. Typecasting ville medføre datatab og nogle trælse fejl :-S
/*
Man erklærer en union, i dette tilfælde er formålet at gemme pointers i floatværdier hvor der ved typecasting kan mistes information
*/
union RefType { int iValue; float fValue;};

/*Oprettelse og brug foregår som nedenfor:
(node er en pointer)*/
union RefType rt = { (int)node };

/*Hvis man vil have den som float så:*/
float floatVersionOfPointer = rt.fValue;

/*Og tilbage til pointer: */
union RefType rt = {0};
rt.fValue = (float)floatVersionOfPointer;
Node* oldNode = (Node*)(rt.iValue);

/*
Grunden til at der er forskel på int->float og float->int er at "constructoren" af union har int først.
*/