Passing
structures to functions
A
structure variable can be passed to a function in a similar way of passing any
argument that is of built-in data type.
If
the structure itself is an argument, then it is called “call by value”. If the
reference of the structure is passed as an argument then it is called, “call by
reference”.
When
a structure is passed as argument to a function using call by value method,any
change made to the contents of the structure variable inside the function to
which it is passed do not affect the structure variable used as an argument.
#include <iostream>
using namespace std;
struct Employee
{
char name[50];
int age;
float salary;
};
void printData(Employee); // Function declaration
int main()
{
Employee p;
cout<<
"Enter Full name: ";
cin>>p.name;
cout<<
"Enter age: ";
cin>>p.age;
cout<<
"Enter salary: ";
cin>>p.salary;
//Function call with
structure variable as an argument
printData(p);
return 0;
}
void printData(Employee q)
{
cout<<
"\nDisplaying Information." <<endl;
cout<<
"Name: " << q.name <<endl;
cout<<"Age:
" <<q.age<<endl;
cout<<
"Salary: " <<q.salary;
}
Enter Full name: Kumar
Enter age: 55
Enter salary: 34233.4
Displaying Information.
Name: Kumar
Age: 55
Salary: 34233.4
In
the above example, a structure named Employee is declared and used. The values
that are entered into the structure are name, age and salary of a Employee are
displayed using a function named printData(). The argument for the above
function is the structure Employee. The input can be received through a
function named readData().
#include <iostream>
using namespace std;
struct Employee {
char name[50];
int age;
float salary;
};
Employee readData(Employee);
void printData(Employee);
int main()
{
Employee p;
p = readData(p);
printData(p);
return 0;
}
Employee
readData(Employee p) {
cout<<
"Enter Full name: ";
cin.get(p.name, 50);
cout<<
"Enter age: ";
cin>>p.age;
cout<<
"Enter salary: ";
cin>>p.salary;
return p;
}
void printData(Employee p)
{
cout<<
"\nDisplaying Information." <<endl;
cout<<
"Name: " << p.name <<endl;
cout<<"Age:
" <<p.age<<endl;
cout<<
"Salary: " <<p.salary;
}
The
output of the program is the same as that of the previous programme.
In
this method of passing the structures to functions ,the address of a structure
variable /object is passed to the function using address of(&) operator. So
any change made to the contents of structure variable inside the function are
reflected back to the calling function.
#include <iostream>
using namespace std;
struct Employee {
char name[50];
int age;
float salary;
};
void readData(Employee &);
void printData(Employee);
int main() {
Employee p;
readData(p);
printData(p);
return 0;
}
void readData(Employee &p) {
cout<<
"Enter Full name: ";
cin.get(p.name, 50);
cout<<
"Enter age: ";
cin>>p.age;
cout<<
"Enter salary: ";
cin>>p.salary;
}
void printData(Employee p)
{
cout<<
"\nDisplaying Information." <<endl;
cout<<
"Name: " << p.name <<endl;
cout<<"Age:
" <<p.age<<endl;
cout<<
"Salary: " <<p.salary;
}
Enter Full name: Kumar
Enter age: 55
Enter salary: 34233.4
Displaying Information.
Name: Kumar
Age: 55
Salary: 34233.4
Structures are
usually passed by reference method because it saves the
memory space and executes faster.
Astructure can be passed to a function through its object. Therefore, passing a structure to a function or passing a structure object to a function is the same because structure object represents the structure. Like a normal variable, structure variable(structure object) can be passed by value or by references / addresses.
Similar
to built-in data types, structures also can be returned from a function.
#include<iostream.h>
using namespace std;
struct Employee
{
int Id;
char Name[25];
int Age;
long Salary;
};
Employee Input();
void main()
{
Employee e;
Emp = Input();
cout<< “The
values Entered are”<<endl:
cout<<
"\n\nEmployee Id : " <<e.Id;
cout<<
"\nEmployee Name : " <<e.Name;
cout<<
"\nEmployee Age : " <<e.Age;
cout<<
"\nEmployee Salary : " <<e.Salary;
}
Employee Input()
{
Employee e;
cout<<
"\nEnter Employee Id : ";
cin>>e.Id;
cout<<
"\nEnter Employee Name : ";
cin>>e.Name;
cout<<
"\nEnter Employee Age : ";
cin>>e.Age;
cout<<
"\nEnter Employee Salary : ";
cin>>e.Salary;
return;
}
Enter Employee Id : 10
Enter Employee Name : Ajay
Enter Employee Age : 25
Enter Employee Salary : 15000
Employee Id : 10
Employee Name : Ajay
Employee Age : 25
Employee Salary : 15000
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.