text: difference between pass by reference and pass by value?   you should specify more the programming language context.  in general, passing by value means the subprogramme that receives the value gets a copy and cannot, thus, modify the original variable used by the caller. it's often said that the function may not produce side-effects.  passing by reference allows for side effects.  but many languages make this a little more complicated. you may pass a "reference" or a "pointer" by value, which means that the original pointer will still point to the same object/memory area when the subprogramme returns. but if the pointer is not marked constant, then the contents pointed to may suffer changes.