Can anyone explain the code step by step? Can't understand what happened after function location was called. Thank you. | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Can anyone explain the code step by step? Can't understand what happened after function location was called. Thank you.

#include <iostream> using namespace std; void location(int &x,int y=4) { y+=2; x+=y; } int main() { int px=10,py=2; location(py); location(px,py); cout<<px<<py; }

9th Jan 2020, 5:17 AM
durga nivedita
durga nivedita - avatar
6 Answers
+ 8
At first call : location(2) px will not change because it is not passed, so will remain as 10 py will change to 8(in function py is nothing but x) as y=4+2=6 x=2+6=8 Because it is called by reference Here px=10 py=8 After call :location(10,8) px value will only be chang becaus Here it is called by reference y=8+2=10 x= 10+10=20 Here px=20 py=8 And just check out parameter passing methods.
9th Jan 2020, 6:16 AM
Ozair Khan
Ozair Khan - avatar
+ 3
void location(int &x,int y=4) { y+=2; x+=y; } int main() { int px=10,py=2; location(py); // You make a call to the function by passing the value of py but the function takes it's address as an argument in the variable x. So any change to x will be reflected in py as well. The 2nd parameter in the function int y=4 is a default variable which is used when we don't have a second parameter to pass while calling the function. So y=4 then inside the function y+=2 which is 4+2=6 and x is 2 already so in next line x becomes 2+6=8. Now since x refers to py, the value of py is changed to 8. location(px,py); // here you are again calling the function by passing px and py, so similarly the reference of px is held by x and it would alter the value of px directly but now y will not have the default value of 4 since the second parameter py is also passed so now y becomes 8(see the above explanation). So inside the function y+=2 will be 8+2=10;
9th Jan 2020, 6:07 AM
Avinesh
Avinesh - avatar
+ 1
Continue..... Your px which is pointed by x is already 10 so in the next line of function x+=y you will get 10+10=20. So finally your px value is 20 and your py value is 8. cout<<px<<py; // output 208
9th Jan 2020, 6:10 AM
Avinesh
Avinesh - avatar
+ 1
Thank you Avinesh and Ozair Khan
10th Jan 2020, 7:07 AM
durga nivedita
durga nivedita - avatar
0
Hi
11th Jan 2020, 1:00 AM
Akbarxõja Mehmonov
Akbarxõja Mehmonov - avatar
0
Where are you from?
11th Jan 2020, 1:02 AM
Akbarxõja Mehmonov
Akbarxõja Mehmonov - avatar