+ 1

I don't understand something

struct Val { int nr; }; void func(Val* v) { Val* w = v; w->nr = 10; } int main() { Val* v = new Val; v->nr = 4; func(v); cout << v->nr; //10 } Why is 10 displayed and not 4? I mean, I just changed w, not v. And "v" is not initialized "Val*& v", but it changes.

17th Jun 2022, 5:33 PM
Coviță Sebastian Marian
Coviță Sebastian Marian - avatar
1 Respuesta
+ 4
You are assingned v pointer into w in function. So now w is alias for v. Both are references. So change in one reflect back on other original.. v is initialized Val* v = new Val;
17th Jun 2022, 5:38 PM
Jayakrishna 🇮🇳