Differences between Structure and Union in C | C programming
STRUCTURE IN C
A structure is a user-defined data type
available in C that allows to combining data items of different kinds.
Structures are used to represent a record.
Defining a structure: To define a structure, you must use the struct statement. The struct statement defines a new data type, with more than one member. The format of the struct statement is as follows:
Defining a structure: To define a structure, you must use the struct statement. The struct statement defines a new data type, with more than one member. The format of the struct statement is as follows:
struct [structure name]
{
member definition;
member definition;
...
member definition;
};
UNION IN C
A union is a special data type available in C
that allows storing different data types in the same memory location. You can
define a union with many members, but only one member can contain a value at
any given time. Unions provide an efficient way of using the same memory
location for multiple purposes.
Defining a Union: To define a union, you must use the union statement in the same way as you did while
defining a structure. The union statement defines a new data type with more
than one member for your program. The format of the union statement is as
follows:
union [union name]
{
member definition;
member definition;
...
member definition;
};
Similarities between Structure and Union
- Both are user-defined data types used to store data of different types as a single unit.
- Their members can be objects of any type, including other structures and unions or arrays. A member can also consist of a bit field.
- Both structures and unions support only assignment = and sizeof operators. The two structures or unions in the assignment must have the same members and member types.
- A structure or a union can be passed by value to functions and returned by value by functions. The argument must have the same type as the function parameter. A structure or union is passed by value just like a scalar variable as a corresponding parameter.
- ‘.’ operator is used for accessing members.
Differences
Structure
|
Union
|
|
Keyword
|
The keyword struct is
used to define structure.
|
The keyword union is
used to define Union.
|
Size
|
When a variable is associated with
a structure, the compiler allocates the memory for each size of its member.
The size of the structure is greater than or equal to the sum of the sizes of its
members.
|
When a variable is associated with
a union, the compiler allocates the memory by considering the size of the largest
memory. So, the size of the union is equal to the size of the largest member.
|
Memory
|
Each member within a structure is
assigned a unique storage area of location.
|
Memory allocation is shared by
individual members of the union.
|
Value Altering
|
Altering the value of a member
will not affect other members of the structure.
|
Altering the value of any of the
members will alter other members' values.
|
Accessing members
|
Individual members can be accessed
at a time.
|
Only one member can be accessed at
a time.
|
Initialization
|
Several members of a structure can
be initialized at once
|
Only the first member of a union
can be initialized.
|
At last, I think, the structure is better because as
memory is shared in union ambiguity is more.