Detailed Print – Computer Sir Ki Class

Login


Lost your password?

Don't have an account ?
Register (It's FREE) ×
  


Shop
siteicon
Solved Problem!#CPP#2652

Problem Statement - output writing, pass by ref/pass by value

Write the output of the following code piece.

		 

Click to open popup

Run Output

@@@@

Solution

char a=’#’,b=’@’; //These are initial values of a and b

domywork(a,b); 
When we pass values here the value of a is passed by reference so its value is likely to be changed by the function. The moment function puts y into x. It actually puts value of b into a. So the b will remain same whatever function does to it as it is not passed by reference..

cout<<a<<b;
This will print @@ as explained above.

domywork(b,a);
Since both b and a have already become @ so the changes the function call operations will happen but they will actually not change any values.

cout<<a<<b;
So this will further print @@. So final output would be @@@@
return 0;
}

void domywork(char &x,char y)
This passes first variable by reference and second by value.
{
x=y;  Original value as passed in x will be overwritten by y
y=x;  y will be overwritten by new x but the original y will not be affected as it is passed by value.

}

Common Errors

  • Such programs should be manually dry run to avoid errors.
  • Student often forget that in the case of second run of the functions both the original variables are already changed.