Usually, when you pass an array into a method/function as a parameter, you can modify the contents of the array, and those changes are reflected outside of the method/function - since the array you passed in was not a copy, but a reference to it (the pointer in memory).
If, in the method/function you do something like :
pArray = pArray[..]
What actually happens is you get a "new" array at a new location (pointer) in memory. It is copied.
The local reference (pointer) to the original array is lost, and any changes you make to this new array are to it alone. The original array is not modified.
Now, if you add "Var" to the method/function definition for your array parameter, you are essentially referring to the pointer of the array, rather than the array itself.
This means, if you do
pArray = pArray[..]
rather than creating new array at a different memory location, it will create the new array in the same memory location, overwriting the old data. Outside of the method/function the original array that you passed in will now appear as this new array.
...or something like that.