Node:Parameters, Next:Pointers, Previous:Expressions and operators, Up:Top
Ways in and out of functions.
Parameters are the main way in C to transfer, or pass,
information from function to function. Consider a call to our old friend
calculate_bill
:
total = calculate_bill (20, 35, 28);
We are passing 20, 35, and 28 as parameters to calculate_bill
so
that it can add them together and return the sum.
When you pass information to a function with parameters, in some cases
the information can go only one way, and the function returns only a
single value (such as total
in the above snippet of code). In
other cases, the information in the parameters can go both ways; that
is, the function called can alter the information in the parameters it
is passed.
The former technique (passing information only one way) is called passing parameters by value in computer programming jargon, and the latter technique (passing information both ways) is referred to as passing parameters by reference.
For our purposes, at the moment, there are two (mutually exclusive) kinds of parameters:
Consider a slightly-expanded version of calculate_bill
:
#include <stdio.h> int main (void); int calculate_bill (int, int, int); int main() { int bill; int fred = 25; int frank = 32; int franny = 27; bill = calculate_bill (fred, frank, franny); printf("The total bill comes to $%d.00.\n", bill); exit (0); } int calculate_bill (int diner1, int diner2, int diner3) { int total; total = diner1 + diner2 + diner3; return total; }
Note that all of the parameters in this example are value parameters:
the information flows only one way. The values are passed to the
function calculate_bill
. The original values are not changed. In
slightly different jargon, we are "passing the parameters by value
only". We are not passing them "by reference"; they are
not "variable parameters".
All parameters must have their types declared. This is true whether they
are value parameters or variable parameters. In the function
calculate_bill
above, the value parameters diner1
,
diner2
, and diner3
are all declared to be of type
int
.