 Explain this question please? Wht happened in this program explain please . | SoloLearn: Learn to code for FREE!

+21

# Explain this question please? Wht happened in this program explain please .

https://www.sololearn.com/post/417181/?ref=app

+6

You are passing a (a,a) to function x by reference (int &a, int&b), meaning you can change their values in function x. You might be confused because of (int&a, int &b), but you can change the names of these to (int&a, int&y) You are still changing ONLY a because you are passing ONLY a in main int c = x(a,a) And in function x(int&a, int&b) a=3; -------> a = 3 b=4; ---------> a=4; REMEMBER int&b is a name holding a reference to a.

+5

Because function x is called with same variable in position of both arguments, inside function variables a and b share same memory location. You can see that by adding test to function x: int x(int &a, int &b) { if(&a==&b) cout<<"Same address"<<endl; a=3; b=4; return a+b; } So first (a=3) both get value 3 and then (b=4) both get value 4.

+4

[email protected]# See the comments below, explanation is already provided by our users

+4

You are passing a (a,a) to function x by reference (int &a, int&b), meaning you can change their values in function x. You might be confused because of (int&a, int &b), but you can change the names of these to (int&a, int&y) You are still changing ONLY a because you are passing ONLY a in main int c = x(a,a) And in function x(int&a, int&b) a=3; -------> a = 3 b=4; ---------> a=4; REMEMBER int&b is a name holding a reference to a.

+3