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

Lecture 04: Structs: Engr. Muhammad Asad Lecturer (EE) Institute of Space Technology, Islamabad Muhammad - Asad@ist - Edu.pk

This document discusses structs and their use in C++. It covers: 1) Structs allow functions to return complex data types like arrays. Struct variables can be passed by value or reference. 2) An example is given of a student struct with members like name, grade, etc. Functions are demonstrated to print and input student data. 3) The advantages of structs over arrays are outlined, such as allowing assignment and function return values. Structs can also contain arrays as members.

Uploaded by

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

Lecture 04: Structs: Engr. Muhammad Asad Lecturer (EE) Institute of Space Technology, Islamabad Muhammad - Asad@ist - Edu.pk

This document discusses structs and their use in C++. It covers: 1) Structs allow functions to return complex data types like arrays. Struct variables can be passed by value or reference. 2) An example is given of a student struct with members like name, grade, etc. Functions are demonstrated to print and input student data. 3) The advantages of structs over arrays are outlined, such as allowing assignment and function return values. Structs can also contain arrays as members.

Uploaded by

ZERO REZA
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 21

Lecture 04: Structs

109104 – Object Oriented Programming (OOP)

Engr. Muhammad Asad

Lecturer (EE)
Institute of Space Technology, Islamabad
[email protected]
Struct & Functions
• A function cannot return a value of type array.
• A struct variable can be passed as a parameter either by value or by
reference.
• A function can return a value of type struct.
void printStudent(studentType student)
{
cout << student.firstName << " " << student.lastName
<< " " << student.courseGrade
<< " " << student.testScore
<< " " << student.programmingScore
<< " " << student.GPA << endl;
}
void readIn(studentType& student)
{
int score;
cin >> student.firstName >> student.lastName;
cin >> student.testScore >> student.programmingScore;
cin >> student.GPA;
}

readIn(newStudent);
Arrays vs Structs
Aggregate Operations Arrays Structs
Arithmetic No No
Assignment No Yes
I/Os No No
Comparison No No
Function return Value No Yes
Arrays in Structs

• const int ARRAY_SIZE = 1000;


• struct listType
•{
• int listElem[ARRAY_SIZE]; //array containing the list
• int listLength; //length of the list
• };
Adding elements in Arrays
• listType intList;
• intList.listLength = 0;
• intList.listElem[0] = 12;
• intList.listLength++;
• intList.listElem[1] = 37;
• intList.listLength++;
Searching
• int seqSearch(const listType& list, int searchItem)
•{
• int loc;
• bool found = false;
• for (loc = 0; loc < list.listLength; loc++)
• if (list.listElem[loc] == searchItem)
• {
• found = true;
• break;
• }
• if (found)
• return loc;
• else
• return -1;
• }
• Suppose that a struct has several data members requiring a large amount of memory to
store the data.
• You need to pass a variable of that struct type by value.
• The corresponding formal parameter then receives a copy of the data of the variable.
• The compiler must then allocate memory for the formal parameter in order to copy the
value of the actual parameter.
• This operation might require, in addition to a large amount of storage space, a
considerable amount of computer time to copy the value of the actual parameter into
the formal parameter.
• On the other hand, if a variable is passed by reference, the formal parameter receives
only the address of the actual parameter.
• An efficient way to pass a variable as a parameter is by reference.
• If a variable is passed by reference, then when the formal parameter changes, the actual
parameter also changes.
• Sometimes, however, you do not want the function to be able to change the values of
the actual parameter.
• In C++, you can pass a variable by reference and still prevent the function from changing
its value.
• This is done by using the keyword const in the formal parameter declaration.
Array of Structs
• struct employeeType
•{
• string firstName;
• string lastName;
• int personID;
• string deptID;
• double yearlySalary;
• double monthlySalary;
• double yearToDatePaid;
• double monthlyBonus;
• };

• employeeType employees[50];
Structs within Structs
• To organize information
• Huge structs with lot of members can be broken down to smaller
structs.
• More feasible and understandable.
struct employeeType int hireyear;
{ int quitmonth;
string firstname; int quitday;
string middlename; int quityear;
string lastname; string phone;
string empID; string cellphone;
string address1; string fax;
string address2; string pager;
string city; string email;
string state; string deptID;
string zip; double salary;
int hiremonth; };
int hireday;
• This struct has 22 members.
• Some members of this struct will be accessed more frequently than
others.
• Some members are more closely related than others.
• Moreover, some members will have the same underlying structure.
struct nameType struct dateType
{ {
string first; int month;
string middle; int day;
string last; int year;
}; };
struct addressType struct contactType
{ {
string address1; string phone;
string address2; string cellphone;
string city; string fax;
string state; string pager;
string zip; string email;
}; };
struct employeeType
{
nameType name;
string empID;
addressType address;
dateType hireDate;
dateType quitDate;
contactType contact;
string deptID;
double salary;
};

employeeType newEmployee;
Accessing Members
• newEmployee.name.first = "Mary";
• newEmployee.name.middle = "Beth";
• newEmployee.name.last = "Simmons";

• cin >> newEmployee.name.first;


for (int j = 0; j < 100; j++)
cin >> employees[j].name.first >> employees[j].name.middle >>
employees[j].name.last;
Example
• Retrieve Struct data from file and console.
• Write the resultant data to a file after processing

You might also like