A pointer is a variable that contains the address of a variable. It cannot be applied to expressions, constants, or register variables.
Every pointer points to a specific data type.
This means that the called function is given the values of its arguments in temporary variables rather than the originals. This is related with automatic variables. In Fortran or var parameters in Pascal, the called routine has access to the original argument, not a local copy. Call by value is an asset, however, not a liability. It usually leads to more compact programs with fewer extraneous variables, because parameters can be treated as conveniently initialized local variables in the called routine.