0
why is it equal to 7?
#include <iostream> #include <string> using namespace std; void foo(int &k){ k*=2; } int main() { int x=2,y=3; foo(x); cout << x + y; return 0; }
5 ответов
0
Because &k means that you are passing the memory address of k, in this way is possible to change the actual value of k.
Without ampersand you pass a copy of k, so foo acts on this copy and not on the actual value.
0
Its simple I'll explain you how:
When you are calling function foo() with parameter x which has a value 2.
Then it stored in k but k is not simple variable of int type but it's taking value of that address where 2 is stored.
Then you do simple maths now k = 2 and k*=2 is k= k*2 , k=4 now it changed the value of 2 which was stored at that address to 4 now you don't need to return because it changes the value of x =2 to x= 4
Then cout<<x+y; gives you 4+3 = 7
Therefore, it gives you output 7.
0
Thx~
0
i was thinking that k* was refering to the value of that address instead of k = k*2
xd
0
it should be *k instead of k* for the value xd