Lecture 13 : Size of Structure in, array vs structure, array within structure , passing structure to function, Nested Structure , Union , nesting of unions

Lecture 13
Size of Structure in, array vs structure, array within structure , passing structure to function, Nested Structure , Union , nesting of unions

Size of structure-
Size of structure can be found out using sizeof() operator with structure variable name or tag name with keyword.

sizeof(struct student); or 
sizeof(s1); 
sizeof(s2);

Size of structure is different in different machines. So size of whole structure may not be equal to sum of size of its members.
Array of structures
When database of any element is used in huge amount, we prefer Array of structures.
Example: suppose we want to maintain data base of 200 students, Array of structures is used. 
#include<stdio.h> 
#include<string.h> 
struct student
{
char name[30]; 
char branch[25]; 
int roll;
}
void main()
{
struct student s[200]; 
int i;
s[i].roll=i+1;
printf("\nEnter information of students:"); 
for(i=0;i<200;i++)
{
printf("\nEnter the roll no:%d\n",s[i].roll); 
printf("\nEnter the name:"); 
scanf("%s",s[i].name);
printf("\nEnter the branch:");
 scanf("%s",s[i].branch); printf("\n");
}
printf("\nDisplaying information of students:\n\n"); 
for(i=0;i<200;i++)
{
printf("\n\nInformation for roll no%d:\n",i+1);
printf("\nName:");
puts(s[i].name); 
printf("\nBranch:"); 
puts(s[i].branch);
}
}
In Array of structures each element of array is of structure type as in above example.
Array within structures
struct student
{
char name[30];
int roll,age,marks[5];
}; 
struct student s[200];

We can also initialize using same syntax as in array.
Nested structure
When a structure is within another structure, it is called Nested structure. A structure variable can be a member of another structure and it is represented as

struct student
{
element 1;
element 2;
………
………
struct student1
{
member 1;
member 2;
}
variable 1;
……….
………. element n;
}
variable 2;
It is possible to define structure outside & declare its variable inside other structure.
struct date
{
int date,month;
};
struct student
{
char nm[20]; 
int roll; 
struct date d;
}; 
struct student s1; 
struct student s2,s3;
Nested structure may also be initialized at the time of declaration like in above example.
struct student s={“name”,200, {date, month}};
{“ram”,201, {12,11}};
Nesting of structure within itself is not valid. Nesting of structure can be extended to any level.
struct time
{
int hr,min;
};
struct day
{
int date,month; 
struct time t1;
};
struct student
{
char nm[20]; 
struct day d;
}stud1, stud2, stud3;
Passing structure elements to function 
We can pass each element of the structure through function but passing individual element is difficult when number of structure element increases. To overcome this, we use to pass the whole structure through function instead of passing individual element.
#include<stdio.h> 
#include<string.h> 
void main() 
{
struct student
{
char name[30]; 
char branch[25]; 
int roll;
}
struct student s; 
printf(“\n enter name=”);
gets(s.name); 
printf("\nEnter roll:"); 
scanf("%d",&s.roll); 
printf("\nEnter branch:"); 
gets(s.branch); 
display(name,roll,branch);
}
display(char name, int roll, char branch)
{
printf(“\n name=%s,\n roll=%d, \n branch=%s”, s.name, s.roll. s.branch);
}
Passing entire structure to function 

#include<stdio.h> 
#include<string.h>
struct student
{
char name[30]; 
int age,roll;
};
display(struct student);
//passing entire structure// 
void main()
{
struct student s1={”sona”,16,101 }; 
struct student s2={”rupa”,17,102 };
display(s1); 
display(s2);
}
display(struct student s)
{
printf(“\n name=%s, \n age=%d ,\n roll=%d”, s.name, s.age, s.roll);
}
Output: 
name=sona
roll=16
UNION
Union is derived data type contains collection of different data type or dissimilar elements. All definition declaration of union variable and accessing member is similar to structure, but instead of keyword struct the keyword union is used, the main difference between union and structure is
Each member of structure occupy the memory location, but in the unions members share memory. Union is used for saving memory and concept is useful when it is not necessary to use all members of union at a time.

Where union offers a memory treated as variable of one type on one occasion where (struct), it read number of different variables stored at different place of memory.
Syntax of union:

union student
{
datatype member1; 
datatype member2;
};
Like structure variable, union variable can be declared with definition or separately such as
union union name
{
Datatype member1;
}
var1;
Example:- union student s;

Union members can also be accessed by the dot operator with union variable and if we have pointer to union then member can be accessed by using (arrow) operator as with structure.
Example:- 
struct student struct student
{
int i;
char ch[10];
};
struct student s;

Here datatype/member structure occupy 12 byte of location is memory, where as in the union side it occupy only 10 byte.

Nested of Union
When one union is inside the another union it is called nested of union. 
Example:-
union a
{
int i; 
int age;
};
union b
{
char name[10]; 
union a aa;
}; 
union b bb;

There can also be union inside structure or structure in union.
Example:- 
void main()
{
struct a
{
int i;
char ch[20];
};
struct b
{
int i;
char d[10];
};
union z
{
struct a a1; struct b b1;
}; 
union z z1; 
z1.b1.j=20; 
z1.a1.i=10; 
z1.a1.ch[10]= “ i“;
z1.b1.d[0]=”j “;
printf(“ “);



Thank you 
For complete free course in C programming language click here

Comments

Most popular post

Case Sensitivity

HTML Basics