Output Writing Structure pass by value/reference – Computer Sir Ki Class
  

Login
[lwa]



Solved Problem! #CPP#2984 siteicon   siteicon   siteicon  

Problem Statement - Output Writing Structure pass by value/reference

Write the output of the following program depicting structure instances being called as value and called as reference to a function.

TC++ #2984

#include <iostream.h>
#include <conio.h>

struct Sale {int ID; float value;};

void sc(Sale a,Sale &b)
{
a.ID=a.ID+1;
a.value=a.value+100;
b=a;
}

int main()
{
clrscr();
Sale zone1={1,400.50},zone2;
sc(zone1,zone2);
cout<<"Zone 1 (ID, value) = "
<<zone1.ID<<", "<<zone1.value<<endl;
cout<<"Zone 2 (ID, value) = "
<<zone2.ID<<", "<<zone2.value<<endl;
getch();
return 0;
}
#include <iostream>
using namespace std;

struct Sale {int ID; float value;};

void sc(Sale a,Sale &b)
{
a.ID=a.ID+1;
a.value=a.value+100;
b=a;
}

int main()
{
Sale zone1={1,400.50},zone2;
sc(zone1,zone2);
cout<<"Zone 1 (ID, value) = "
<<zone1.ID<<", "<<zone1.value<<endl;
cout<<"Zone 2 (ID, value) = "
<<zone2.ID<<", "<<zone2.value<<endl;
return 0;
}

Test it !

Solution


Run Output

Zone 1 (ID, value) = 1, 400.5
Zone 2 (ID, value) = 2, 500.5

struct Sale {int ID; float value;}; //Structure named Sale defined with two variables.

void sc(Sale a,Sale &b)
A function sc which passes instance a of structure Sale as call by value and another instance b as as call by reference
{
a.ID=a.ID+1;
Original value of a will not be affected with this only the instance a which is local to this function would change

a.value=a.value+100;
Here also instance variable value of a will change

b=a;
All the variables of a will be copied to variables of instance b as passed by reference.
}

Sale zone1={1,400.50},zone2;
Instance zone1 is initialised and zone2 is just declared.

sc(zone1,zone2);
A function that will modify values passed as value by zone1 to zone2 which are passed as reference. This means that as per function construct zone1 values will remain unaffected and only zone2 which did not had any initial values will now have values as computed in the function.

cout<<“Zone 1 (ID, value) = ” <<zone1.ID<<“, “<<zone1.value<<endl;
zone1 values are printed.

cout<<“Zone 2 (ID, value) = “<<zone2.ID<<“, “<<zone2.value<<endl;
zone2 values as computed in the function are printed.

Common Errors

  • Such programs need careful observation in connection with what is passed as value and what is passed as reference. A user is encouraged to find the values printed when both the arguments of a function are passed as value or by reference.


Share

sunmitra| Created: 24-Jan-2018 | Updated: 24-Jan-2018|






Back