Contents    Page-10    Prev    Next    Page+10    Index   

Parameter Passing

There are several methods of passing parameters between calling program and subroutine:

  1. Call by Reference: The address of the parameter is passed. The storage of the actual parameter is used (and possibly modified). Used by Fortran, Pascal for var parameters, C for arrays.

  2. Call by Pointer: A pointer to the parameter is passed by value. Used in Lisp, in Java for reference types (any capital-letter type). In some cases, parts of the object that is pointed to can be changed.

  3. Call by Value: The value of the parameter is copied into the subroutine. Modifications are not seen by the caller. Expensive for large data, e.g. arrays. Used in Pascal, Java, C for basic types.

  4. Call by Value - Result: The value of the parameter is copied into the subroutine, and the result is copied back upon exit. (Ada)

  5. Call by Name: The effect is that of a textual substitution or macro-expansion of the subroutine into the caller's environment. Trouble-prone, hard to implement, slow. Used in Algol.