Statements (49)
| Predicate | Object |
|---|---|
| gptkbp:instanceOf |
gptkb:Data_structure
|
| gptkbp:advantage |
Allows flexible data representation
Harder to debug Not type safe Potential for bugs Saves memory |
| gptkbp:alsoKnownAs |
gptkb:Variant
Discriminated union Tagged union |
| gptkbp:cause |
Type safety issues
|
| gptkbp:contrastsWith |
gptkb:Struct_(computer_science)
|
| gptkbp:definedIn |
gptkb:C++_standard
gptkb:C_standard |
| gptkbp:example |
union Data { int i; float f; char c; }
|
| gptkbp:fieldAccess |
Only one field valid at a time
|
| gptkbp:fieldAccessExample |
u.f = 3.14;
u.i = 10; |
| gptkbp:hasSyntax |
union { int i; float f; } u;
|
| gptkbp:introducedIn |
gptkb:C_programming_language_(1972)
|
| gptkbp:limitation |
Difficult to use safely in high-level code
No automatic type checking Undefined behavior if wrong field accessed |
| gptkbp:memoryLayout |
All members share the same memory location
|
| gptkbp:memoryUsage |
Size of largest member
|
| gptkbp:numberOfLocations |
Different data types in the same memory location
|
| gptkbp:purpose |
Efficient memory usage
|
| gptkbp:relatedConcept |
gptkb:Algebraic_data_type
gptkb:Tagged_pointer Option type Sum type Variant record |
| gptkbp:sizeDeterminedBy |
Largest member
|
| gptkbp:usedFor |
Device drivers
Embedded systems Interpreting same memory as different types Low-level memory manipulation Protocol implementations Type punning |
| gptkbp:usedIn |
gptkb:Rust_programming_language
gptkb:C_programming_language gptkb:C++_programming_language gptkb:Ada_programming_language gptkb:Pascal_programming_language gptkb:Swift_programming_language Low-level programming Operating systems Compilers Systems programming |
| https://www.w3.org/2000/01/rdf-schema#label |
Union (computer science)
|