FaaDoOEngine
ers.com
Engaging Peers, Inspiring Careers!
Indias No.1 website for:
IIT-JEE/AIEEE preparation resources
Coaching centre packages
Engineering Major and Minor projects
Seminar reports
Paper presentations
EBOOKS
Resumes/CVs, and so much more
C Data Types:
Primary data types
Derived data types
User-defined data types
Function
Type
Array
Type
Derived
Types
Pointer
Type
Structure
Type
Union
Type
Array Collection of one or more related variables of similar
data type grouped under a single name
Structure Collection of one or more related variables of different
data types, grouped under a single name
In a Library, each book is an object, and its characteristics like title, author, no of
pages, price are grouped and represented by one record.
The characteristics are different types and grouped under a aggregate variable of
different types.
A record is group of fields and each field represents one characteristic. In C, a record
is implemented with a derived data type called structure. The characteristics of record are
called the members of the structure.
Book-1
BookID: 1211
Title : C Primer Plus
Author : Stephen Prata
Pages : 984
Price : Rs. 585.00
book
bookid
Book-2
BookID: 1212
Title : The ANSI C Programming
Author : Dennis Ritchie
Pages : 214
Price : Rs. 125.00
book_id
title
title
pages
pages
price
price
2 bytes
50 bytes
Array of 50 characters
author
author
integer
Book-3
BookID: 1213
Title : C By Example
Author : Greg Perry
Pages : 498
Price : Rs. 305.00
Array of 40
characters
2 bytes
integer
float
40 bytes
4 bytes
Memory occupied by a Structure variable
STRUCTURE- BOOK
struct book {
int book_id ;
char title[50] ;
char author[40] ;
int pages ;
float price ;
};
Structure tag
struct < structure_tag_name >
{
data type < member 1 >
data type < member 2 >
. . . .
data type < member N >
};
Declaring a Structure Type
struct student
{
int roll_no;
char name[30];
float percentage;
};
Declaring a Structure Variable
struct student s1,s2,s3;
(or)
struct student
{
int roll_no;
char name[30];
float percentage;
}s1,s2,s3;
Initialization of structure
Initialization of structure variable while
declaration :
struct student s2 = { 1001, K.Avinash ,
87.25 } ;
Initialization of structure members individually :
s1. roll_no = 1111;
strcpy ( s1. name , B. Kishore ) ;
s1.percentage = 78.5 ;
membership operator
Reading values to members at
runtime:
struct student s3;
printf(\nEnter the roll no);
scanf(%d,&s3.roll_no);
printf(\nEnter the name);
scanf(%s,s3.name);
printf(\nEnter the percentage);
scanf(%f,&s3.percentage);
Implementing a Structure
struct employee {
int empid;
char name[35];
Declaration of Structure Type
int age;
float salary;
Declaration of Structure variables
};
int main() {
struct employee emp1,emp2 ;
Declaration and initialization of Structure variable
struct employee emp3 = { 1213 , S.Murali , 31 , 32000.00 } ;
emp1.empid=1211;
strcpy(emp1.name, K.Ravi);
Initialization of Structure members individually
emp1.age = 27;
emp1.salary=30000.00;
Reading values to members of Structure
printf(Enter the details of employee 2);
scanf(%d %s %d %f , &emp2.empid, emp2.name, &emp2.age, &emp2.salary);
if(emp1.age > emp2.age)
printf( Employee1 is senior than Employee2\n );
else
printf(Employee1 is junior than Employee2\n);
Accessing members of Structure
printf(Emp ID:%d\n Name:%s\n Age:%d\n Salary:%f,
emp1.empid,emp1.name,emp1.age,emp1.salary);
}
Arrays And structures
struct student
{
int sub[3] ;
int total ;
};
int main( ) {
struct student s[3];
int i,j;
for(i=0;i<3;i++) {
printf(\n\nEnter student %d marks:,i+1);
for(j=0;j<3;j++) {
scanf(%d,&s[i].sub[j]);
}
}
for(i=0;i<3;i++) {
s[i].total =0;
for(j=0;j<3;j++) {
s[i].total +=s[i].sub[j];
}
printf(\nTotal marks of student %d is: %d,
i+1,s[i].total );
}
}
Nesting of structures
struct date {
int day ;
Outer Structure
int month ;
int year ;
};
struct person {
char name[40];
int age ;
struct date b_day ;
};
int main( ) {
Inner Structure
struct person p1;
strcpy ( p1.name , S. Ramesh ) ;
p1. age = 32 ;
Accessing Inner
p1.b_day.day = 25 ;
p1.b_day. month = 8 ; Structure members
p1.b_day. year = 1978 ;
}
OUTPUT:
Enter student 1 marks: 60 60 60
Enter student 2 marks: 70 70 70
Enter student 3 marks: 90 90 90
Total marks of student 1 is: 180
Total marks of student 2 is: 240
Total marks of student 3 is: 270
structures and functions
struct fraction {
int numerator ;
int denominator ;
};
void show ( struct fraction f )
{
printf ( %d / %d , f.numerator,
f.denominator ) ;
}
Self referential structures
struct student_node {
int roll_no ;
char name [25] ;
struct student_node *next ;
};
int main( )
{
struct student_node s1 ;
struct student_node s2 = { 1111, B.Mahesh, NULL } ;
s1. roll_no = 1234 ;
strcpy ( s1.name , P.Kiran ) ;
int main ( ) {
struct fraction f1 = { 7, 12 } ;
show ( f1 ) ;
}
s1. next = & s2 ;
s2 node is linked to s1 node
printf ( %s , s1. name ) ;
Prints P.Kiran
printf ( %s , s1.next - > name ) ;
OUTPUT:
7 / 12
Prints B.Mahesh
A self referential structure is one that includes at least one member
which is a pointer to the same structure type.
With self referential structures, we can create very useful data
structures such as linked -lists, trees and graphs.
Pointer to a structure
struct product
{
int prodid;
char name[20];
};
int main()
{
struct product inventory[3];
struct product *ptr;
printf(Read Product Details : \n");
for(ptr = inventory;ptr<inventory +3;ptr++) {
scanf("%d %s", &ptr->prodid, ptr->name);
}
printf("\noutput\n");
for(ptr=inventory;ptr<inventory+3;ptr++)
{
printf("\n\nProduct ID :%5d",ptr->prodid);
printf("\nName : %s",ptr->name);
}
}
Accessing structure members through
pointer :
i) Using . ( dot ) operator :
( *ptr ) . prodid = 111 ;
strcpy ( ( *ptr ) . Name, Pen) ;
ii) Using - > ( arrow ) operator :
ptr - > prodid = 111 ;
strcpy( ptr - > name , Pencil) ;
Read Product Details :
111 Pen
112 Pencil
113 Book
Print Product Details :
Product ID : 111
Name : Pen
Product ID : 112
Name : Pencil
Product ID : 113
Name : Book
A union is a structure all of whose members share the same memory
Union is a variable, which is similar to the structure and contains number of members
like structure.
In the structure each member has its own memory location whereas, members of union
share the same memory. The amount of storage allocated to a union is sufficient to hold its
largest member.
struct student {
Memory allotted to structure student
int rollno;
float avg ;
char grade ;
Address 5000
5001
5002
5003
5004
5005
5006
};
union pupil {
int rollno;
float avg ;
avg
rollno
grade
char grade;
Total
memory
occupied
:
7
bytes
};
int main() {
struct student s1 ;
Memory allotted to union pupil
union pupil p1;
Address 5000
5001
5002
5003
printf ( %d bytes ,
sizeof ( struct student ) ) ;
printf ( %d bytes ,
sizeof ( union pupil ) ) ;
}
rollno
Output :
avg
7 bytes 4 bytes
grade
Total memory occupied : 4 bytes
FaaDoOEngine
ers.com
Engaging Peers, Inspiring Careers!
Indias No.1 website for:
IIT-JEE/AIEEE preparation resources
Coaching centre packages
Engineering Major and Minor projects
Seminar reports
Paper presentations
EBOOKS
Resumes/CVs, and so much more