Important Note
When a function returns, the contents of its value
parameters are destroyed, along with the contents
of its local variables.
The difference between value parameters and local
variables is that the values of local variables are
undefined when a function starts to execute,
whereas value parameters are automatically
initialized to the values of the corresponding
arguments.