struct Vector2
{ float x, y; };
int main()
{
int a = 2;
int b = a; // a and b are different variable. (copy)
b = 3; // a remains as 2
Vector2 c = {2,3};
Vector2 d = c;
d.x = 5; // c.x is still 2
Vector2* e = new Vector2();
Vector2* f = e;
f->x = 5; // e->x is also 5.
// because it copies the pointer, not the pointed object.
}