Thus the behaviour of call by value Java or Visual Basic and call by value C or Pascal are significantly different : in C or Pascal, calling a function with a large structure as an argument will cause the entire structure to be copied ( except if it's actually a reference to a structure ), " potentially " causing serious performance degradation, and mutations to the structure are invisible to the caller.