About

A function call:

Type

Convention Description Language
Call by value Argument is evaluated and copy of value is passed to the function Default in most Algol-like languages after Algol 60,
such as Pascal, Delphi, Simula and many others.
C, C++, Java (References to objects and arrays are also passed by value)
Call by reference Reference to argument, typically its address is passed Selectable in most Algol-like languages after Algol 60, such as Algol 68, Pascal, Delphi and many others. C++, Fortran, PL/I
Call by result Parameter value is copied back to argument on return from the function Ada OUT parameters
Call by value-result Parameter value is copied back on entry to the function and again on return Algol
Call by name Like a macro – replace the parameters with the unevaluated argument expressions Algol, Scala
Call by constant value Like call by value except that the parameter is treated as a constant

Documentation / Reference