C Language Tutorials by Ghulam Murtaza Dahar - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Explaination

In this program, structure variables dist1 and dist2 are passed by value (because value of dist1 and dist2 does not need to be displayed in main function) and dist3 is passed by reference ,i.e, address of dist3 (&dist3) is passed as an argument. Thus, the structure pointer variable d3 points to the address of dist3. If any change is made in d3variable, effect of it is seed in dist3 variable in main function.

C Programming Unions

Unions are quite similar to the structures in C. Union is also a derived type as structure. Union can be defined in same manner as structures just the keyword used in defining union in union where keyword used in defining structure was struct.

union car{

char name[50];

int price;

};

Union variables can be created in similar manner as structure variable.

union car{

char name[50];

int price;

}c1, c2, *c3;

OR;

union car{

char name[50];

int price;

};

-------Inside Function-----------

union car c1, c2, *c3;

In both cases, union variables c1, c2 and union pointer variable c3 of type union car is created.

Accessing members of an union

The member of unions can be accessed in similar manner as that structure. Suppose, we you want to access price for union

variable c1 in above example, it can be accessed as c1.price. If you want to access price for union pointer variable c3, it can be accessed as (*c3).price or as c3->price.

Difference between union and structure

Though unions are similar to structure in so many ways, the difference between them is crucial to understand. This can be

demonstrated by this example:

#include <stdio.h>

union job { //defining a union

char name[32];

float salary;

int worker_no;

}u;

struct job1 {

char name[32];

float salary;

int worker_no;

}s;

int main(){

printf("size of union = %d",sizeof(u));

printf("\nsize of structure = %d", sizeof(s));

return 0;

}