Home Segments Index Top Previous Next

123: Mainline

The reason that C acts as though it builds an isolating fence around each function's parameters is that C reserves a chunk of memory for each parameter every time that the corresponding function is called. In the doubling_time example, a new chunk of memory is reserved for the parameters, r, and the argument's value is placed in that chunk, as shown here:

Memory reserved for r,          Memory reserved for r, 
a variable in main              a parameter in doubling_time 
*------*                        *------* 
|      | ---------------------> |      | 
*------*                        *------* 

Thus, the reassignment of the parameter, r, inside the function has no effect on the value of the variable, r, outside, even though the names, r and r, happen to be the same.

Because C generally reserves new chunks of memory for parameters and variables, into which values are copied, C is said to be a call-by-value language.