Passing an input parameter by reference is also called pass by address, this is where the address of the variable to act on is passed to the function. This allows the function to change the value stored at that variable. Passing an input parameter by value is when a copy of the input variable is taken and manipulated by the function, but the actual data stored within the variable is not changed by the function. If you wish to edit the stored variables but use pass by value you may end up with an error as it could seem as though your function was not performing as expected when really it was simply the method used to pass variables that would be causing the error.