Programming in C: Unit IV: Structures and Union

Unions

Syntax with Example C Programs

Similar to structures, a union is a collection of variables of different data types. The only difference between a structure and a union is that in case of unions, you can only store information in one field at any one time.

UNIONS

Similar to structures, a union is a collection of variables of different data types. The only difference between a structure and a union is that in case of unions, you can only store information in one field at any one time.

To better understand a union, think of it as a chunk of memory that is used to store variables of different types. When a new value is assigned to a field, the existing data is replaced with the new data.

Thus unions are used to save memory. They are useful for applications that involve multiple members, where values need not be assigned to all the members at any one time.

Declaring a Union

The syntax for declaring a union is the same as that of declaring a structure. The only difference is that instead of using the keyword struct, the keyword union would be used. The syntax for union declaration can be given as

union union-name

{

data_type var-name;

data_type var-name;

………….

};

Programming Tip: Variable of a structure or a union can be declared at the time of structure/union definition by placing the variable name after the closing brace and before the semicolon.

Again, the typedef keyword can be used to simplify the declaration of union variables. The most important thing to remember about a union is that the size of a union is the size of its largest field. This is because sufficient number of bytes must be reserved to store the largest sized field.

Accessing a Member of a Union

A member of a union can be accessed using the same syntax as that of a structure. To access the fields of a union, use the dot operator (.), i.e., the union variable name followed by the dot operator followed by the member name.

Initializing Unions

A striking difference between a structure and a union is that in case of a union, the fields share the same memory space, so fresh data replaces any existing data. Look at the following code and observe the difference between a structure and union when their fields are to be initialized.

Programming Tip: It is an error to initialize any other union member except the first member.

#include <stdio.h>

typedef struct POINT1

{

int x, y;

};

typedef union POINT2

{

int x;

int y;

};

int main()

{

POINT1 P1 = {2,3};

// POINT2 P2 ={4, 5}; Illegal with union

POINT2 P2;

P2. x = 4;

P2. y = 5;

printf("\n The co-ordinates of P1 are %d and %d", P1.x, Pl.y);

printf("\n The co-ordinates of P2 are %d and %d", P2.x, P2.y);

return 0;

}

Output

The co-ordinates of P1 are 2 and 3

The co-ordinates of P2 are 5 and 5

In this code, POINT1 is a structure name and POINT2 is a union name. However, both the declarations are almost same (except the keywords - struct and union); in main(), you see a point of difference while initializing values. The fields of a union cannot be initialized all at once. Look at the output carefully. For the structure variable the output is fine but for the union variable the answer does not seem to be correct.

Programming Tip: The size of a union is equal to the size of its largest member.

To understand the concept of union, execute the following code. The code given below just re- arranges the printf statements. You will be surprised to see the result.

#include <stdio.h>

typedef struct POINT1

{

int x, y;

};

typedef union POINT2

{

int x;

int y;

};

int main()

POINT1 P1 = {2,3};

POINT2 P2;

printf("\n The co-ordinates of P1 are %d and %d", P1.x , Pl.y);

P2. x = 4;

printf("\n The x co-ordinate of P2 is %d", P2.x);

P2.y = 5;

printf("\n The y co-ordinate of P2 is %d", P2.y);

return 0;

}

Output

The co-ordinates of P1 are 2 and 3

The x co-ordinate of P2 is 4

The y co-ordinate of P2 is 5

Here although the output is correct, the data is still over-written in memory.

Programming in C: Unit IV: Structures and Union : Tag: : Syntax with Example C Programs - Unions


Programming in C: Unit IV: Structures and Union



Under Subject


Programming in C

CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation



Related Subjects


Professional English II

HS3251 2nd Semester 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation


Statistics and Numerical Methods

MA3251 2nd Semester 2021 Regulation M2 Engineering Mathematics 2 | 2nd Semester Common to all Dept 2021 Regulation


Engineering Graphics

GE3251 eg 2nd semester | 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation


Physics for Electrical Engineering

PH3202 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Basic Civil and Mechanical Engineering

BE3255 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Electric Circuit Analysis

EE3251 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Physics for Electronics Engineering

PH3254 - Physics II - 2nd Semester - ECE Department - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Electrical and Instrumentation Engineering

BE3254 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Circuit Analysis

EC3251 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Materials Science

PH3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation


Basic Electrical and Electronics Engineering

BE3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation


Physics for Civil Engineering

PH3201 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation


Basic Electrical, Electronics and Instrumentation Engineering

BE3252 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation


Physics for Information Science

PH3256 2nd Semester CSE Dept | 2021 Regulation | 2nd Semester CSE Dept 2021 Regulation


Basic Electrical and Electronics Engineering

BE3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation


Programming in C

CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation