0% found this document useful (0 votes)
53 views

Programming: Structures

Structures allow grouping of related data types together. A structure variable can contain elements of different data types. Structures are useful for representing complex real world entities like student records, bank accounts etc. Elements of a structure are accessed using dot operator. Arrays of structures can be used to represent multiple records. Values of one structure variable can be assigned to another variable of same structure type.

Uploaded by

Shweta Shah
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views

Programming: Structures

Structures allow grouping of related data types together. A structure variable can contain elements of different data types. Structures are useful for representing complex real world entities like student records, bank accounts etc. Elements of a structure are accessed using dot operator. Arrays of structures can be used to represent multiple records. Values of one structure variable can be assigned to another variable of same structure type.

Uploaded by

Shweta Shah
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 27

Programming

Structures

1
Structures

• A Structure is a collection of related data


items, possibly of different types.
• A structure type in C++ is called struct.
• A struct is heterogeneous in that it can be
composed of data of different types.
• In contrast, array is homogeneous since it can
contain only data of the same type.
2
Structures

• Structures hold data that belong together.


• Examples:
– Student record: student id, name, major, gender,
start year, …
– Bank account: account number, name, currency,
balance, …
– Address book: name, address, telephone number,

• In database applications, structures are called
records.
3
Structures

• Individual components of a struct type are


called members (or fields).
• Members can be of different types (simple,
array or struct).
• A struct is named as a whole while individual
members are named using field identifiers.
• Complex data structures can be formed by
defining arrays of structs.
4
struct basics

• Definition of a structure:
struct <struct-type>{
Each identifier
<type> <identifier_list>;
<type> <identifier_list>; defines a member
... of the structure.
} ;

• Example:
struct Date { The “Date” structure
int day; has 3 members,
int month; day, month & year.
int year;
} ;
5
struct examples
• Example:
struct StudentInfo{
int Id; The “StudentInfo”
int age;
char Gender; structure has 4 members
double CGA; of different types.
};

• Example:
struct StudentGrade{
char Name[15]; The “StudentGrade”
char Course[9];
int Lab[5]; structure has 5
int Homework[3]; members of
int Exam[2];
}; different array types.
6
struct examples
• Example:
struct BankAccount{
char Name[15];
The “BankAcount”
int AcountNo[10]; structure has simple,
double balance; array and structure
Date Birthday;
};
types as members.

• Example:
struct StudentRecord{
char Name[15]; The “StudentRecord”
int Id; structure has 4
char Dept[5];
char Gender;
members.
};
7
struct basics
• Declaration of a variable of struct type:
<struct-type> <identifier_list>;

• Example:
StudentRecord Student1, Student2;

Student1 and Student2 are variables of StudentRecord type.


Name Name
Student1 Id Id Gender Student2

Gender Dept
Dept

8
• A structure contains a number of data types
grouped together. These data types may or
may not be of the same type. The following
example illustrates the use of this data type.
• This program demonstrates two fundamental
aspects of structures:
• (a) declaration of a structure
• (b) accessing of structure elements
Declaring a Structure
• For example,
struct book
{
char name ;
float price ;
int pages ;
};
struct book b1, b2, b3 ;
• is same as...
struct book {
char name ;
float price ;
int pages ;
} b1, b2, b3 ;
• Write a program for structure whose name is
book having members are name , price and
page no.. User should enter the values and
display the values.
main( )
{
struct book
{
char name ; float price ; int pages ;
};
struct book b1, b2, b3 ;
printf ( "\nEnter names, prices & no. of pages of 3 books\n" ) ;
scanf ( "%c %f %d", &b1.name, &b1.price, &b1.pages ) ;
scanf ( "%c %f %d", &b2.name, &b2.price, &b2.pages ) ;
scanf ( "%c %f %d", &b3.name, &b3.price, &b3.pages ) ;
printf ( "\nAnd this is what you entered" ) ;
printf ( "\n%c %f %d", b1.name, b1.price, b1.pages ) ;
printf ( "\n%c %f %d", b2.name, b2.price, b2.pages ) ;
printf ( "\n%c %f %d", b3.name, b3.price, b3.pages ) ;
}
• And here is the output... Enter names, prices
and no. of pages of 3 books
• A 100.00 354
• C 256.50 682
• F 233.70 512
How Structure Elements are Stored
• /* Memory map of structure elements */ main( ) {
struct book {
char name ;
float price ;
int pages ;
};
struct book b1 = { 'B', 130.00, 550 } ;
printf ( "\nAddress of name = %u", &b1.name ) ;
printf ( "\nAddress of price = %u", &b1.price ) ;
printf ( "\nAddress of pages = %u", &b1.pages ) ;
}
• Here is the output of the program...
• Address of name = 65518
• Address of price = 65519
• Address of pages = 65523
Ex. 2: struct-to-struct assignment
• The values contained in one
struct type variable can be Student1
assigned to another variable of
Chan Tai Man
the same struct type.
12345 M
• Example: COMP
strcpy(Student1.Name,
"Chan Tai Man");
Student1.Id = 12345;
strcpy(Student1.Dept, "COMP");
Student1.gender = 'M'; Chan Tai Man
12345 M
Student2 = Student1;
Student2 COMP
19
20
• For example, suppose you want to store data
about a book. You might want to store its
name (a string), its price (a float) and number
of pages in it (an int). If data about say 3 such
books is to be stored, then we can follow two
approaches:
• (a) Construct individual arrays, one for storing
names, another for storing prices and still
another for storing number of pages.
• (b) Use a structure variable.
• main( ) {
• char name[3] ;
• float price[3] ;
• int pages[3], i ;
• printf ( "\nEnter names, prices and no. of pages of 3
books\n" ) ;
• for ( i = 0 ; i <= 2 ; i++ )
• scanf ( "%c %f %d", &name[i], &price[i], &pages[i] );
• printf ( "\nAnd this is what you entered\n" ) ;
• for ( i = 0 ; i <= 2 ; i++ )
• printf ( "%c %f %d\n", name[i], price[i], pages[i] );
• }
• And here is the sample run... Enter names, prices
and no. of pages of 3 books
• A 100.00 354
• C 256.50 682
• F 233.70 512
• And this is what you entered
• A 100.000000 354
• C 256.500000 682
• F 233.700000 512
Array of Structures
• /* Usage of an array of structures */ main( )
• {
• struct book
• {
• char name ;
• float price ;
• int pages ;
• };
• struct book b[100] ;
• int i ;
• for ( i = 0 ; i <= 99 ; i++ )
• { printf ( "\nEnter name, price and pages " ) ;
• scanf ( "%c %f %d", &b[i].name, &b[i].price, &b[i].pages ) ;
• } for ( i = 0 ; i <= 99 ; i++ ) printf ( "\n%c %f
%d", b[i].name, b[i].price, b[i].pages ) ; }
linkfloat( ) { float a = 0, *b ; b = &a ; /* cause
emulator to be linked */ a = *b ; /* suppress
the warning - variable not used */ }
Additional Features of Structures
• main( ) { struct employee { char name[10] ; int
age ; float salary ; } ; struct employee e1 =
{ "Sanjay", 30, 5500.50 } ; struct employee e2,
e3 ; /* piece-meal copying */ strcpy
( e2.name, e1.name ) ; e2.age = e1.age ;
• e2.salary = e1.salary ; /* copying all elements
at one go */ e3 = e2 ; printf ( "\n%s %d %f",
e1.name, e1.age, e1.salary ) ; printf ( "\n%s
%d %f", e2.name, e2.age, e2.salary ) ; printf
( "\n%s %d %f", e3.name, e3.age, e3.salary ) ; }
The output of the program would be... Sanjay
30 5500.500000 Sanjay 30 5500.500000
Sanjay 30 5500.500000

You might also like