what mean of int &x in this program | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

what mean of int &x in this program

#include <iostream> using namespace std; int func(int &x,int y=10) { if(x%y==0) return x++; else return y--; } main() { int p=20,q=23; q=func(p,q); cout<<p<<" "<<q<<endl; p=func(q); cout<<p<<" "<<q<<endl; q=func(p); cout<<p<<" "<<q<<endl; return 0; }

9th Feb 2020, 6:33 AM
abdullah
10 Answers
+ 1
When call func1(p, q) it similar x=p and y=q then the function work on x and y without changing p and q in main() function. When call func2(p, q) it similar that only y=q and function work on p and y any change happens to y does not change q but p are used than any change happens inside the function will happen in main(). Look again: https://code.sololearn.com/c9tGz3Z0DUKN/?ref=app
9th Feb 2020, 2:35 PM
Rafik Abdelhak Nadir
Rafik Abdelhak Nadir - avatar
+ 3
it Passes the value by reference, by using reference the function can modify actual value in the main function, try by removing the reference to check
9th Feb 2020, 6:40 AM
Rasul YeaBari Sun Beam
Rasul YeaBari Sun Beam - avatar
+ 1
Every variable is a memory location, which has its address defined. That address can be accessed using the ampersand (&) operator (also called the address-of operator), which denotes an address in memory. Address-of : operator (&): returns the memory address of its operand. &x it mean : the address in memory that hold the value of variable x of type integer. When passing by value in a function (use x), it does not change the value of the variable, but rather makes a copy of the value and does its job. As for passing by reference (use &x), it does not make a copy of the variable, but rather uses the variable itself, and any change inside the function will change its value.
9th Feb 2020, 11:24 AM
Rafik Abdelhak Nadir
Rafik Abdelhak Nadir - avatar
+ 1
x%y it mean just the reminder of the division x/y. in this case it return x-- when the reminder == 0. and return y++ when the reminder != 0. When you call the function func(p, q) you passing by reference p, and passing by value q. The function store the value of q in new adress (adress of y) any changes happens to y does not affect p, but it store the value of p in the same adress (adress of x same adress of q), and any changes happend to x affect q.
9th Feb 2020, 11:52 AM
Rafik Abdelhak Nadir
Rafik Abdelhak Nadir - avatar
+ 1
thank you!😍
9th Feb 2020, 4:15 PM
abdullah
0
it mean in x%y the value of x is its adrress
9th Feb 2020, 11:34 AM
abdullah
0
?
9th Feb 2020, 11:34 AM
abdullah
0
See this code you will see the changes. https://code.sololearn.com/c9tGz3Z0DUKN/?ref=app you will see when we call func1 (pass by value) that x and y take the value of p and q then the value of x and y change without changing rhe value of p and q. in the second case you will see when we call func2 (pass by reference) that x take the value of p then the value of x change and even value of p change too.
9th Feb 2020, 12:26 PM
Rafik Abdelhak Nadir
Rafik Abdelhak Nadir - avatar
0
but in the case when we call fun2 we give q value not y
9th Feb 2020, 1:47 PM
abdullah
0
then what is the value of y?
9th Feb 2020, 2:03 PM
abdullah