Difference Between Union and Structure
A union is a class all of whose data members are mapped to the same address within its object. The size of an object of a union is, therefore, the size of its largest data member.
In a structure, all of its data members are stored in contiguous memory locations. The size of an object of a struct is, therefore, the size of the sum of all its data members.
This gain in space efficiency, while valuable in certain circumstances, comes at a great cost of safety: the program logic must ensure that it only reads the field most recently written along all possible execution paths. The exception is when unions are used for type conversion: in this case, a certain field is written and the subsequently read field is deliberately different.
An example illustrating this point is:
+-----+-----+ struct { int a; float b } gives | a | b | +-----+-----+ ^ ^ | | memory location: 150 154 | V +-----+ union { int a; float b } gives | a | | b | +-----+Structures are used where an "object" is composed of other objects, like a point object consisting of two integers, those being the x and y coordinates:
typedef struct { int x; // x and y are separate int y; } tPoint;Unions are typically used in situation where an object can be one of many things but only one at a time, such as a type-less storage system:
typedef enum { STR, INT } tType; typedef struct { tType typ; // typ is separate. union { int ival; // ival and sval occupy same memory. char *sval; } } tVal;Read more about this topic: Union (computer Science)
Famous quotes containing the words difference between, difference, union and/or structure:
“There is no difference between the client and the prostitute. If a man goes to a prostitute, he is also a prostitute.”
—Sister Michele, Indian nun. As quoted in the New York Times Magazine, p. 35 (January 16, 1994)
“There is as much difference between the counsel that a friend giveth, and that a man giveth himself, as there is between the counsel of a friend and of a flatterer. For there is no such flatterer as is a mans self.”
—Francis Bacon (15611626)
“My paramount object in this struggle is to save the Union, and is not either to save or to destroy slavery. If I could save the Union without freeing any slave, I would do it; and if I could save it by freeing all the slaves, I would do it; and if I could save it by freeing some and leaving others alone, I would also do that.”
—Abraham Lincoln (18091865)
“Who says that fictions only and false hair
Become a verse? Is there in truth no beauty?
Is all good structure in a winding stair?
May no lines pass, except they do their duty
Not to a true, but painted chair?”
—George Herbert (15931633)