Martin Mortensens kodeeksempler |
|
| C++ |
Begreb/beskrivelse |
Kodeeksempler |
UnionUnion 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. */ |