Passing normally gives the function a copy. Changes don't affect the original. Pass by reference lets it modify the original: void add10(int& n) { n += 10; }. Call normally: add10(x).
Inside, n is an alias for x, so n += 10 changes x. No return needed. Works well for modifying multiple variables. I use this for functions computing multiple outputs. Pass parameters by reference and modify directly.