When you pass a struct, C++ copies the entire struct by default. Every member gets duplicated. The function receives a copy, not the original. Changes inside don't affect the caller's struct.
Example: void move(Point p) { p.x += 10; }. Call move(myPoint) and the function adds 10 to the copy's x, then throws it away. Original myPoint.x is unchanged. This is safe but expensive for large structs.
Copying hundreds of bytes every call wastes time. For small structs it's fine. For big ones, you'll want references.